در قسمت قبلی با Wrapper ها آشنا شدیم و متوجه شدیم که چگونه به خطرناک تر شدن آسیب پذیری LFI کمک میکنند اما اگر به دنبال اپیزود هیجانی بعدی این سریال هستید در این قسمت با ما همراه باشید تا با استفاده از فایلهای لاگ سرویسهای مختلف، به مرحله جدید از هیجان در LFI وارد شویم! 😉
فایلهای لاگ در واقع تاریخچه کارهای انجام شده و اتفاقات رخ داده در یک نرمافزار را نگه داری میکنند. به صورت کلی در این قسمت خواهیم آموخت از فایلهای لاگ ساخته شده توسط سرویسها و نرمافزارهای مختلف، برای ثبت کد دلخواه خودمان در داخل سرور و نهایتاً اجرای آن استفاده میکنیم. اگر تاکنون برخوردی با این روش جذاب نداشته اید و نمونه آن را ندیده اید لطفا هیجان خود را کنترل کرده و بدون سکته کردن در این قسمت جذاب، همراه ما باشید! 😊
قبل از این که به سراغ معرفی روش های جدید برویم توجه داشته باشید که استفاده از روش های بیان شده در این قسمت، منوط به داشتن دسترسی خواندن فایلهای لاگ سرویسهای ذکر شده است. همچنین مسیر موجود برای فایلهای لاگ ممکن است در سرورهای مختلف متفاوت باشد و این موضوع بستگی به نسخه و نوع سیستمعامل، نرمافزار و از همه مهمتر، پیکربندی ادمین دارد. در این بخش تعداد محدودی از نرمافزارها و سرویسهای معروف، معرفی شده است اما قطعاً نرمافزارهای زیاد دیگری هم وجود دارد که فایل لاگ آنها قابل استفاده با این روش باشد.
استفاده از فایل لاگ access وب سرور
وب سرورها معمولاً برای خود دو دسته فایل لاگ ایجاد و نگه داری میکنند که یکی از آنها لاگ فایل مربوط به error ها و دیگری لاگ فایل مربوط به access ها است. لاگ فایل error خطاهای ایجاد شده در وب سرور را نگه داری میکند که معمولاً شامل خطاهای PHP ، خطا در پیکربندی های خود وب سرور و ... است. فایل لاگ دسترسی، در واقع تاریخچه درخواست های رسیده به وب سرور را نگه داری میکند. در این فایل درخواست های GET همراه با آدرس URL و بدنه ی request ثبت میشوند. این قابلیت به ما اجازه میدهد تا با درخواست به یک آدرس که داخل آن کد PHP مد نظرمان را گذاشتهايم بتوانیم کدهای PHP مد نظرمان را وارد فایل لاگ کنیم و با استفاده از آسیب پذیری LFI بتوانیم کد ها را اجرا کنیم.
به عنوان مثال، در تصویر زیر میتوانید نمونهای از لاگ access وب سرور apache را که در آدرس var/log/apache2/access.log/ ذخیره شده است، مشاهده کنید.
همانگونه که در تصویر بالا مشاهده میکنید در درخواست GET، آدرس به طور کامل در فایل لاگ access ذخیره میشود. بنابراین به سراغ سایت میرویم و یک درخواست مانند تصویر زیر در Burpsuite می فرستیم تا کد در فایل لاگ access ذخیره شود.
اگر الان فایل لاگ access را باز کنیم مشاهده خواهیم کرد که قطعه کد PHP ما، مانند تصویر زیر در آن قرار گرفته است.
حال به سراغ فایل آسیب پذیر LFI میرویم و مسیر فایل لاگ access یعنی var/log/apache2/access.log/ را به عنوان ورودی در پارامتر آسیب پذیر page وارد میکنیم تا آن را include کند. همانگونه که در تصویر زیر مشاهده میکنید دستور phpinfo به خوبی اجرا شده و مشخصات php نصب شده نمایش داده شده است. احتمالاً خود apache هم فکر نمیکرد که فایل لاگی که تولید میکند انقدر به هکرها کمک کند! 😉
استفاده از لاگ SSH
سرویس SSH یک فایل لاگ با مسیر var/log/auth.log/ در لینوکس دارد. زمانی که شما با یک یوزر مانند example به آن وصل شوید لاگی مانند تصویر زیر ساخته میشود.
حال اگر به جای یوزر در کامند SSH یک کد PHP مانند مثال زیر بگذاریم، میتوانیم در داخل لاگ یک کد PHP تزریق کنیم.
ssh ‘<?php phpinfo();?>’@127.0.0.1
حال اگر فایل لاگ را بعد از اجرای کامند نگاه کنیم خروجی مانند تصویر زیر خواهد شد.
حال اگر آدرس فایل لاگ SSH را در پارامتر آسیب پذیر page وارد کنیم مانند شکل زیر کد اجرا میشود و اطلاعات php نصب شده روی سرور را به ما نمایش میدهد.
استفاده از لاگ FTP
در این مثال ما نرمافزار vsftpd را به عنوان نمونهای معروف بررسی کردهایم که روی اوبونتو نصب شده است. بعد از نصب سرویس vsftpd یک فایل لاگ برای این سرویس در آدرس var/log/vsftpd.log/ ساخته میشود که ساختاری مانند تصویر زیر دارد.
همانگونه که در تصویر بالا مشاهده میکنید نام یوزری که در ابتدای اتصال از شما خواسته میشود در داخل این فایل لاگ ثبت میشود.
بنابراین اگر مانند شکل بالا یک کد php با یک پسورد اشتباه را در هنگام اتصال به آن بدهیم فایل لاگ مانند تصویر زیر میشود.
حال اگر آدرس این فایل را در صفحه آسیب پذیر به LFI بدهیم همانگونه که در تصویر زیر می بینید کد اجرا میشود.
استفاده از لاگ سرویس Mail
ایمیل های ارسال شده برای یک کاربر معمولاً در آدرسی مانند var/spool/mail/username/ است که عبارت username همان نام کاربر در لینوکس است.
حال اگر فایل var/spool/mail/username/ را برای یکی از کاربران باز کنیم با محتویاتی مشابه تصویر زیر روبهرو می شویم.
همانگونه که در شکل بالا مشخص شده است Subject و متن ایمیل های دریافتی کاربر را در داخل این فایل میتوان دید.
بنابراین اگر یک ایمیل با کد PHP به ایمیل کاربر وب سرور یا هر کاربری که دسترسی خواندن فایل mail او را داشته باشیم بزنیم میتوانیم کد php را اجرا کنیم. نمونهای از دستور ارسال ایمیل به یک کاربر در لینوکس را در تصویر زیر مشاهده میکنید که بخش سفید رنگ در واقع محل قرار گرفتن نام کاربری مد نظر ما است.
حال اگر فایل ایمیل های این کاربر را باز کنیم مانند شکل زیر کد خودمان را مشاهده خواهیم کرد.
همانگونه که در تصویر زیر مشاهده میکنید اگر آدرس فایل ایمیل یوزر را در صفحهای که آسیب پذیر به LFI است قرار دهیم مانند تصویر زیر کد اجرا خواهد شد.
در این قسمت از دوره آموزشی LFI، یاد گرفتیم که چگونه میتوانیم در یک سامانه آسیب پذیر به LFI،با استفاده از فایلهایی که در ظاهر کاربردی به جز حفظ کردن تاریخچه کارهای یک نرمافزار نداشتند، به اجرای کد روی سرور برسیم! اگر شما تجربه استفاده از لاگ یک سرویس یا نرمافزار دیگر را دارید یا روشی مشابه سراغ دارید در قسمت نظرات منتظر شما هستیم! 😊
اگر تا امروز از دیدن سریال LFI لذت برده اید، در ادامه این سریال با اپیزود بعدی همراه باشید تا بیشتر شگفت زده شوید! 😉 تا قسمت بعدی خدا نگه دار شما!