Nginx漏洞修复之目录穿越[目录遍历]漏洞复现及修复

漏洞描述

  • 前言

    Nginx是一个高性能的HTTP和反向代理服务器,经常被做为反向代理,动态的部分被proxy_pass传递给后端端口,而静态文件需要Nginx来处理。漏洞出现在服务器的静态文件中。如果静态文件存储在/home/目录下,而该目录在url中名字为files,那么就需要用alias设置目录的别名

    Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞

  • 修改nginx.conf

    在如下配置中设置目录别名时/files配置为/home/的别名,那么当我们访问/files…/时,nginx实际处理的路径时/home/…/,从而实现了穿越目录

    Nginx漏洞穿越配置

漏洞复现

环境搭建

  • 安装Nginx

    环境:Ubuntu 16.04 + Nginx 1.11.3

    
        # 获得root权限
        sudo -i
        
        # 安装nginx依赖库和gcc g++的依赖库
        apt-get install build-essential
        apt-get install libtool
        
        # 安装pcre依赖库
        apt-get install libpcre3 libpcre3-dev
        
        # 安装zlib依赖库
        apt-get install zlib1g-dev
        
        # 安装ssl依赖库
        apt-get install openssl
        
        # 安装nginx
        wget http://nginx.org/download/nginx-1.11.3.tar.gz
        
        # 解压
        tar -zxvf nginx-1.11.3.tar.gz
        
        # 进入解压目录:
        cd nginx-1.11.3
        
        # 配置
        ./configure --prefix=/usr/local/nginx
        
        # 安装nginx
        make
        
        # 启动nginx
        /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    
    
    
  • 验证搭建是否成功

    访问nginx

漏洞验证

  • 修改Nginx配置文件

    
        apt-get install vim
        vim /usr/local/nginx/conf/nginx.conf
    
    
    

    Nginx漏洞配置

  • 重启Nginx

    
        cd /usr/local/nginx
        ./sbin/nginx -s reload
    
    
  • 正常访问

    Nginx正常访问

  • 目录穿越(遍历)

    Nginx漏洞穿越

漏洞修复

  • 修改Nginx配置文件

    修改/usr/local/nginx/conf/nginx.conf,使用/闭合/files,形成/files/。

    Nginx漏洞修复配置修改

  • 重启Nginx

    
        cd /usr/local/nginx
        ./sbin/nginx -s reload
    
    
    
  • 修复验证

    Nginx漏洞修复验证

参考链接

  • Nginx 配置错误导致漏洞(目录遍历漏洞)——漏洞复现

    https://blog.csdn.net/weixin_40412037/article/details/106234134

  • [漏洞复现]——nginx目录穿越漏洞

    https://blog.csdn.net/m0_46607055/article/details/121641417

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐