一、漏洞描述
Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。
二、漏洞原理
1、 修改nginx.conf,在如下图位置添加如下配置
在如下配置中设置目录别名时/files配置为/home/的别名,那么当我们访问/files…/时,nginx实际处理的路径时/home/…/,从而实现了穿越目录。
三、漏洞环境搭建和复现
1、 在ubuntu 16.04安装nginx
1.1安装nginx依赖库
1.1.1安装gcc g++的依赖库
ubuntu平台可以使用如下命令:
apt-get install build-essential
apt-get install libtool
1.1.2安装pcre依赖库
apt-get install libpcre3 libpcre3-dev
1.1.3安装zlib依赖库
apt-get install zlib1g-dev
1.1.4安装ssl依赖库
apt-get install openssl
1.2安装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:
make install
#启动nginx:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
1.3浏览器访问,测试nginx是否搭建成功
2、 修改/usr/local/nginx/conf/nginx.conf,在如下图位置添加如下内容:
3、重启nginx服务
./sbin/nginx -s reload
4、浏览器访问http://192.168.10.137/files/
5、浏览器访问http://192.168.10.137/files…/,如下图所示,说明存在目录穿越漏洞
6、修改/usr/local/nginx/conf/nginx.conf,把files使用/闭合
7、重启nginx服务,再次访问http://192.168.10.137/files…/,提示404,说明该漏洞不存在
四、漏洞防御
1、修改/usr/local/nginx/conf/nginx.conf,使用/闭合/files,形成/files/。