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

0x00 前言

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

0x01 环境搭建

  • 使用richarvey/nginx-php-fpm镜像

    1
    docker run -d -p 80:80  richarvey/nginx-php-fpm
  • 配置nginx,添加配置test路由解析到/var/www/html/路径(注意:/test没有结尾的/

    1
    2
    3
    4
    # /etc/nginx/sites-available/default.conf
    location /test {
    alias /var/www/html/;
    }
  • 对应Web服务的文件结构,目标是目录遍历获取flag.txt的内容

    1
    2
    3
    4
    5
    6
    |--var
    |--www
    |--flag.txt
    |--html
    |--index.php
    |--test.txt

0x02 漏洞利用

0x03小结:

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

0x04参考链接: