
ماسح LFI كدليل إثبات: كشف تلقائي لتعرضات /etc/passwd عبر اجتياز الدليل ومطابقة التعبيرات النمطية.
# ماسح LFI
أداة بايثون خفيفة لإثبات المفهوم لفحص الأهداف بحثًا عن ثغرات تضمين الملفات المحلية (LFI) عن طريق محاولة استرداد `/etc/passwd` واكتشاف وجوده باستخدام فحص تعبير منتظم. :contentReference[oaicite:0]{index=0}
## الميزات
- **فحص بالجملة** لأسماء المضيفين أو أهداف `host:port` من ملف إدخال
- **حمولة اجتياز الدليل** للوصول إلى `/etc/passwd`
- **الكشف بالتعبير المنتظم** عن إدخال `root` لتأكيد LFI
- **شريط تقدم** مدعوم بـ `tqdm` للتغذية الراجعة في الوقت الفعلي
- **تقارير منظمة**: إخراج النتائج والمعاينات إلى ملف نتائج
## المتطلبات الأساسية
- بايثون 3.6 أو أحدث
- [`tqdm`](https://pypi.org/project/tqdm/) (`pip install tqdm`)
- أمر `curl` متوفر في PATH الخاص بك
## التثبيت
```bash
git clone https://github.com/yourusername/lfi-scanner.git
cd lfi-scanner
pip install tqdm
```
## الاستخدام
```bash
python poc.py <input_file> [-o OUTPUT_FILE]
```
* `<input_file>`: مسار ملف يحتوي على هدف واحد في كل سطر (`hostname` أو `hostname:port`).
* `-o, --output`: (اختياري) مسار لكتابة النتائج (الافتراضي: `results.txt`).
### مثال
بفرض ملف `targets.txt`:
```
example.com
192.168.0.1:8443
```
شغّل الماسح:
```bash
python poc.py targets.txt -o scan_results.txt
```
سترى مخرجات مثل:
```
[+] https://example.com:443/... → /etc/passwd تم العثور عليه
[-] https://192.168.0.1:8443/... → تم استلام الرد، لا يوجد تطابق
```
وسيحتوي `scan_results.txt` على ملخص ومعاينات.
## تفصيل السكريبت
* **`poc.py`**:
* يستخدم `argparse` لتحليل `--input` و `--output`.
* يكرر الأهداف ويبني عنوان URL مع حمولة اجتياز عميقة.
* يستدعي `curl --insecure -s` لكل هدف.
* يبحث عن `root:.*?:0:0:` لتأكيد تعرض `/etc/passwd`.
* يطبع الحالة لكل مضيف ويكتب النتائج المفصلة إلى ملف الإخراج.
## إخلاء مسؤولية
استخدم هذه الأداة **بمسؤولية** و**فقط** على الأصول التي تملكها أو لديك إذن صريح لاختبارها. الفحص غير المصرح به قد ينتهك القوانين وشروط الخدمة.
## الترخيص
صدر تحت [رخصة MIT](https://github.com/abrewer251/cve-2017-12637_sap-netweaver-url-traversal/blob/main/LICENSE).
```