یکی از آسیب پذیری های رایج در وبسایت ها، آسیب پذیری LFI یا Local File Inclusion می باشد. زمانی که اکسپلویت کردن آسیب پذیری RFI به هر دلیلی مانند تنظیم allow_url_include=off امکان پذیر نباشد، از این آسیب پذیری جهت نفوذ به سیستم هدف استفاده می نماییم. این آسیب پذیری نیز همانند RFI در توابع زیر ممکن است بوجود آید.
include()
include_once()
require()
require_once()
در توابع دیگری مانند fopen نیز ممکن است این آسیب پذیری بوجود آید اما در شرایط عادی تبدیل آن به RCE امکان پذیر نیست و نیاز به ترکیب چند متد دارد.
به کد زیر توجه کنید:
<?php
include($_GET[“page”]);
?>
به دلیل محدود نشدن ورودی کاربر، نفوذگر قادر است به دیگر فایل های موجود روی سیستم هدف دسترسی پیدا کرده و آنها را در صفحه آسیب پذیر فراخوانی کند.
نکته: فراخوانی فایل عملی است که زبان PHP یک فایل را به عنوان یک فایل قابل پردازش توسط زبان بارگذاری و اجرا نماید که توسط توابع یاد شده اجرا می شود.
جهت بررسی وجود آسیب پذیری آدرسی شبیه لینک زیر خواهیم داشت:
http://example.com/vuln.php?page=/etc/passwd
در صورت آسیب پذیر بودن وبسایت و نداشتن محدودیت مسیرهای دسترسی یا محدودیت کد، محتوای فایل passwd نمایش داده خواهد شد.
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
در برخی موارد ورودی page با مقادیری دیگر ترکیب شده و جهت بررسی آسیب پذیری نیاز به کمی تغییرات در مقدار ورودی می باشد که آن را در قسمت بعد توضیح خواهم داد. گاهی نیز با وجود محدودیت مسیرهای دسترسی مانند تنظیم open_basedir، دسترسی به فایل های مورد نیاز جهت اکسپلویت نمودن و تبدیل به RCE ممکن نمی باشد که در این صورت از روش های ترکیبی جهت تبدیل به RCE استفاده می نماییم.
انواع روش های تبدیل LFI به RCE در قسمت های بعد آموزش داده خواهد شد.
نویسنده: سعید بستان دوست
خواننده محترم، کلیه حقوق این نوشته برای نویسنده محفوظ و کپی برداری با ذکر منبع بلامانع است.
موفق باشید.
0