این سه حمله از رایجترین و مهمترین تهدیدات امنیتی در برنامههای تحتوب هستند که معمولاً بهدلیل ضعف در اعتبارسنجی ورودیها و تنظیمات اشتباه سرور رخ میدهند. در صورت موفقیت، مهاجم میتواند به فایلهای حساس سیستم دسترسی پیدا کند، کد مخرب اجرا کند یا کنترل کامل سرور را به دست بگیرد.
1. File Inclusion چیست؟
File Inclusion به معنی درج فایلها در صفحات وب است. بسیاری از سایتها برای بارگذاری یک کامپوننت، زبان، قالب یا تنظیمات، فایلهایی را به صورت دینامیک Load میکنند، مثلاً:
اگر ورودی کنترل نشود، مهاجم میتواند هر فایل دلخواه را بارگذاری کند.
به همین دلیل دو نوع مهم در این دسته وجود دارد:
-
Local File Inclusion (LFI)
-
Remote File Inclusion (RFI)
2. حمله Local File Inclusion (LFI)
در حمله LFI مهاجم تلاش میکند فایلهای محلی سرور را بارگذاری کند. یعنی فایلهایی که روی همان سرور وجود دارند.
مثال ساده از LFI
آدرس آسیبپذیر:
کد آسیبپذیر:
مهاجم مقدار پارامتر را تغییر میدهد:
نتیجه: نمایش محتوای فایل حساس /etc/passwd.
خطرات LFI
-
خواندن فایلهای حساس (config، log، passwd و…)
-
اجرای کد مخرب از طریق Log Poisoning
-
دور زدن سیستم احراز هویت
-
دسترسی کامل به سرور
3. حمله Remote File Inclusion (RFI)
در این حمله، مهاجم به برنامه دستور میدهد که فایل را از یک سرور خارجی بارگذاری کند.
یعنی فایل مخرب از طریق URL لود میشود:
کد:
خطرات RFI
-
اجرای مستقیم کد مخرب (Web Shell)
-
کنترل کامل سرور
-
ایجاد بکدور
-
تزریق اسکریپت از راه دور
شرایط لازم برای RFI
-
allow_url_include فعال باشد
-
اعتبارسنجی ورودی وجود نداشته باشد
4. حمله Directory Traversal
این حمله با هدف دسترسی به مسیرهای خارج از محدوده مجاز انجام میشود.
مهاجم از الگوی ../ برای خروج از پوشه مجاز استفاده میکند:
خطرات Directory Traversal
-
خواندن فایلهای خصوصی و حساس
-
افشای Credential ها
-
استخراج سورسکد backend
-
نشت اطلاعات کاربران
5. تفاوت LFI ،RFI و Directory Traversal
| حمله | توضیح | سطح خطر |
|---|---|---|
| LFI | خواندن یا اجرای فایلهای محلی سرور | زیاد |
| RFI | بارگذاری فایل مخرب از سرور خارجی | بسیار زیاد |
| Directory Traversal | دسترسی به فایلها با خروج از مسیر مجاز | متوسط تا زیاد |
6. مثالهای واقعی از پیامدهای این حملات
-
سرقت اطلاعات کاربران
-
هک شدن کامل سرورهای PHP
-
دسترسی غیرمجاز به config دیتابیس
-
اجرای کد PHP و ایجاد Shell
-
نفوذ به هاست اشتراکی و دسترسی به سایتهای دیگر روی آن
7. روشهای جلوگیری از LFI/RFI/Directory Traversal
الف – اعتبارسنجی ورودی
-
استفاده از allowlist
-
محدود کردن ورودی به نام فایلهای مشخص
مثال امن:
ب – غیرفعال کردن include از راه دور
در فایل php.ini:
ج – استفاده از realpath و جلوگیری از ../
د – تنظیم دسترسی فایلها
-
محدود کردن دسترسی Apache/Nginx
-
عدم ذخیره فایلهای حساس در مسیر public
حملات LFI، RFI و Directory Traversal از خطرناکترین حملات در وبسایتها هستند که معمولاً به دلیل اعتبارسنجی ضعیف ورودیها، تنظیمات اشتباه سرور و عدم تفکیک مناسب فایلها به وجود میآیند.
برای جلوگیری از این حملات:
-
ورودیها را اعتبارسنجی کنید
-
دسترسی پوشهها را محدود کنید
-
بارگذاری فایل از راه دور را غیرفعال کنید
-
از توابع امن مانند realpath استفاده کنید



