
- بواسطة x32x01 ||
إيه هي ثغرة Local File Inclusion (LFI)؟ 
ثغرة LFI بتخلي المهاجم يقرأ أو يتصفح أو حتى يشغّل ملفات موجودة على السيرفر من غير ما يبقى عنده صلاحيات خاصة - كل ده بس عن طريق تغيير رابط بسيط أو باراميتر في الصفحة.يعني إيه "include" ؟
لما بنستدعي ملف في PHP أو JSP بنعمل include، يعني بنقول للبرنامج: "ياريت جِب الملف ده واطبعه هنا". لو الدالة اللي بتعمل include دي بتاخد اسم الملف من رابط المستخدم من غير تحقق، يبقى في ثغرة - تقدر تعرض أي ملف السيرفر يقدر يوصله.مثال بسيط:
Code:
index.php?file=filename.html
ليه دي مشكلة كبيرة؟
لأن المهاجم يقدر:- يقرأ ملفات حساسة زي /etc/passwd أو ملفات الكونفيج.
- يشغّل سكربت كان هو رفعه قبل كده لو لقى مكان يرفعه فيه.
- ينفّذ هجمات تانية بعد كده زي XSS أو RCE لو الظروف ساعدته.
ازاي نكتشف ثغرة LFI - الفكرة العامة
دَوّر على سكربتات بتاخد اسم ملف كـ parameter، زي: Code:
http://website.com/index.php?page=home.html
Code:
/../../../etc/passwd
أمثلة على طرق الاستغلال (مماثلة للمقال الأصلي)
- لو المسار الحالي:
/var/www/mutillidae/index.php
وعايز توصلCode:/etc/passwd
../../../../etc/passwd
- ساعات الـinclude بيضيف لاحقة .php تلقائيًا، فتحتاج حيل زي الـnull-byte (%00) علشان تقطع السلسلة، لكن تفاصيل التطبيق بتختلف من سيرفر للتاني.
الثغرة ممكن توصّل لإيه تاني؟ (الوخيمة)
- قراءة ملفات حساسة: معلومات عن المستخدمين أو إعدادات القواعد.
- تشغيل سكربتات خبيثة: لو المهاجم قدر يرفع ملف PHP قبل كده، ممكن يشغّله عن طريق LFI.
- تصعيد لهجمات تانية: XSS، RCE، أو حتى DOS حسب الحالة.
طرق الحماية العملية - اعملها فورًا 
1. فلترة المدخلات (Input Validation)
ما تقبلش أي اسم ملف جاي من المستخدم من غير تحقق صارم. خلي الـapp يقبل بس قيم محددة (white-list).2. منع الـPath Traversal
منع أو تطهير (sanitize) أي رموز زي ../ أو أي محاولات للخروج من الـwebroot.3. استخدم مسارات ثابتة أو mapping
بدل ما تحط الملف كـ string مباشر، استخدم جدول يربط مفاتيح بأسماء ملفات داخلية (مثال: page=home → home.php).4. تقليل صلاحيات الملفات (Least Privilege)
حط صلاحيات الملفات على السيرفر بحيث حساب الـwebserver ما يقدرش يقرأ غير الملفات اللي محتاجها بالظبط.5. منع رفع الملفات غير المصرح بها
لو المساحة بتسمح رفع ملفات، اضمن فحص الامتدادات، نوع المحتوى، وتخزينها في مكان مافيش include ليه.6. Logging ومراقبة
سجّل محاولات الوصول الغريبة وردود السيرفر وراقبهم - دايماً ممكن تلاقي محاولات Path Traversal في اللوجز.7. استخدم WAF وRequest Filtering
WAF كويس يقدر يصد أنماط الهجوم المعروفة ويمنع محاولات LFI الشائعة.نصايح للمطوّرين - خطوات سريعة للتطبيق
- لا تستخدم user input مباشرة في include.
- استخدم دوال تأكيد المسار (realpath) وتأكد إنه جوا الـwebroot.
- حدّث لغات وأطر العمل والبكتجات دوريًا.
- اختبر تطبيقك بانتظام (فحوصات أمنية مصرح بها أو pentest).
التعديل الأخير: