F5远程代码执行漏洞分析
字数 1756 2025-08-15 21:33:10
F5 BIG-IP 远程代码执行漏洞分析与防护指南
漏洞概述
在 F5 BIG-IP 产品的流量管理用户页面 (TMUI)/配置实用程序的特定页面中存在一处严重的远程代码执行漏洞。未授权的远程攻击者通过向该页面发送特制的请求包,可以实现任意 Java 代码执行,进而完全控制 F5 BIG-IP 设备的所有功能,包括但不限于:
- 执行任意系统命令
- 开启/禁用服务
- 创建/删除服务器端文件
- 完全控制系统权限
影响版本
该漏洞影响以下 F5 BIG-IP 版本:
- BIG-IP 15.x: 15.1.0/15.0.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. F5 Tmsh 命令执行机制
攻击者可以通过构造特殊请求执行 tmsh (Traffic Management Shell) 命令:
- 创建 bash 脚本的 F5 命令格式为:
command [bash命令内容] - 请求路径示例:
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp
漏洞成因分析:
- 使用
../;可以绕过 Tomcat 的登录验证(利用 Tomcat 对 URI 解析的差异) - 直接访问
tmshCmd.jsp文件 tmshCmd_jsp.java文件中的cmd参数直接从请求中获取,未经充分验证
代码执行流程:
- 调用
WorkspaceUtils.runTmshCommand方法 - 在
com.f5.tmui.locallb.handler.workspace.WorkspaceUtils类中 - 命令被分割后仅检查是否以
create、delete、list、modify等开头 - 通过
Syscall.callElevated方法最终执行命令 - 结果通过
ObjectManager返回
2. 任意文件写入漏洞
攻击路径:
- 请求路径示例:
/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp
漏洞实现:
fileName参数控制写入路径content参数控制写入内容- 最终通过
writer.println方法写入文件
3. 任意文件读取漏洞
攻击路径:
- 请求路径示例:
/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp
漏洞综合利用
攻击者可以通过组合利用上述漏洞实现完整的攻击链:
-
创建 bash 脚本:
- 通过命令执行功能写入恶意脚本
-
写入文件:
- 使用任意文件写入功能将恶意脚本写入系统
-
执行脚本获取 shell:
- 通过命令执行功能运行写入的脚本,获取系统 shell
修复方案
临时缓解措施
官方第一版建议(7月7日):
- 登录系统执行以下命令:
tmsh edit /sys httpd all-properties - 在配置文件中添加:
include '<LocationMatch ".*\.\.;.*">Redirect 404 /</LocationMatch>' - 保存并重启服务:
save /sys config restart sys service httpd
绕过问题:
- 攻击者可通过
/hsqldb;路径直接请求org.hsqldb.Servlet执行 Java 代码,绕过上述规则
官方第二版建议(7月9日):
修改配置为:
include '<LocationMatch ";">Redirect 404 /</LocationMatch>'
新绕过方式:
- 攻击者可通过
/hsqldb%0a请求方式再次绕过防护
长期解决方案
建议用户:
- 及时升级到官方发布的最新补丁版本
- 限制外部IP对TMUI页面的访问
- 实施网络分段,限制对管理接口的访问
相关技术背景
该漏洞利用了Tomcat对URI解析的特殊处理机制,相关技术细节可参考:
防御建议
- 及时更新:关注F5官方安全公告,及时应用安全补丁
- 访问控制:限制管理界面的访问来源IP
- 日志监控:加强对
/tmui/路径访问日志的监控 - 纵深防御:在网络边界部署WAF等防护设备,设置相关规则
- 最小权限:按照最小权限原则配置系统账户权限