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 参数直接从请求中获取,未经充分验证

代码执行流程

  1. 调用 WorkspaceUtils.runTmshCommand 方法
  2. com.f5.tmui.locallb.handler.workspace.WorkspaceUtils 类中
  3. 命令被分割后仅检查是否以 createdeletelistmodify 等开头
  4. 通过 Syscall.callElevated 方法最终执行命令
  5. 结果通过 ObjectManager 返回

2. 任意文件写入漏洞

攻击路径

  • 请求路径示例:/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp

漏洞实现

  • fileName 参数控制写入路径
  • content 参数控制写入内容
  • 最终通过 writer.println 方法写入文件

3. 任意文件读取漏洞

攻击路径

  • 请求路径示例:/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp

漏洞综合利用

攻击者可以通过组合利用上述漏洞实现完整的攻击链:

  1. 创建 bash 脚本

    • 通过命令执行功能写入恶意脚本
  2. 写入文件

    • 使用任意文件写入功能将恶意脚本写入系统
  3. 执行脚本获取 shell

    • 通过命令执行功能运行写入的脚本,获取系统 shell

修复方案

临时缓解措施

官方第一版建议(7月7日)

  1. 登录系统执行以下命令:
    tmsh
    edit /sys httpd all-properties
    
  2. 在配置文件中添加:
    include '<LocationMatch ".*\.\.;.*">Redirect 404 /</LocationMatch>'
    
  3. 保存并重启服务:
    save /sys config
    restart sys service httpd
    

绕过问题

  • 攻击者可通过 /hsqldb; 路径直接请求 org.hsqldb.Servlet 执行 Java 代码,绕过上述规则

官方第二版建议(7月9日)
修改配置为:

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

新绕过方式

  • 攻击者可通过 /hsqldb%0a 请求方式再次绕过防护

长期解决方案

建议用户:

  1. 及时升级到官方发布的最新补丁版本
  2. 限制外部IP对TMUI页面的访问
  3. 实施网络分段,限制对管理接口的访问

相关技术背景

该漏洞利用了Tomcat对URI解析的特殊处理机制,相关技术细节可参考:

防御建议

  1. 及时更新:关注F5官方安全公告,及时应用安全补丁
  2. 访问控制:限制管理界面的访问来源IP
  3. 日志监控:加强对/tmui/路径访问日志的监控
  4. 纵深防御:在网络边界部署WAF等防护设备,设置相关规则
  5. 最小权限:按照最小权限原则配置系统账户权限
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日) : 登录系统执行以下命令: 在配置文件中添加: 保存并重启服务: 绕过问题 : 攻击者可通过 /hsqldb; 路径直接请求 org.hsqldb.Servlet 执行 Java 代码,绕过上述规则 官方第二版建议(7月9日) : 修改配置为: 新绕过方式 : 攻击者可通过 /hsqldb%0a 请求方式再次绕过防护 长期解决方案 建议用户: 及时升级到官方发布的最新补丁版本 限制外部IP对TMUI页面的访问 实施网络分段,限制对管理接口的访问 相关技术背景 该漏洞利用了Tomcat对URI解析的特殊处理机制,相关技术细节可参考: Tomcat路径规范化问题分析 BlackHat USA 2018演讲:Breaking Parser Logic 防御建议 及时更新 :关注F5官方安全公告,及时应用安全补丁 访问控制 :限制管理界面的访问来源IP 日志监控 :加强对 /tmui/ 路径访问日志的监控 纵深防御 :在网络边界部署WAF等防护设备,设置相关规则 最小权限 :按照最小权限原则配置系统账户权限