中间件漏洞总结(二)- Nginx
(一) Nginx简介
Nginx 是一款 轻量级的 Web 服务器、 反向代理 服务器及 电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少, 并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好
(二)文件解析
1、 漏洞介绍及成因
对任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加test.jpg/x.php进行解析攻击。
2、 漏洞复现
在网站根目录下新建一个i.gif的文件,在里面写入phpinfo()
在浏览器中打开
利用文件解析漏洞,输入192.168.139.129:100/i.gif.2.php,发现无法解析
将/etc/php5/fpm/pool.d/www.conf中security.limit_extensions = .php中的.php删除
再次在浏览器中打开,成功解析
3、 漏洞修复
1) 将php.ini文件中的cgi.fix_pathinfo的值设为0.这样php在解析1.php/1.jpg这样的目录时,只要1.jpg不存在就会显示404;
2) 将/etc/php5/fpm/pool.d/www.conf中security.limit_ectensions后面的值设为.php
(三)目录遍历
1、 漏洞简介及成因
Nginx的目录遍历与Apache一样,属于配置方面的问题,错误的配置可到导致目录遍历与源码泄露‘
2、 漏洞复现
打开test目录,发现无法打开
修改/etc/nginx/sites-avaliable/default,在如下图所示的位置添加autoindex on
再次访问
3、 漏洞修复
将/etc/nginx/sites-avaliable/default里的autoindex on改为autoindex off
(四) CRLF注入
1、 漏洞简介及成因
CRLF时“回车+换行”(\r\n)的简称。
HTTP Header与HTTP Body时用两个CRLF分隔的,浏览器根据两个CRLF来取出HTTP内容并显示出来。
通过控制HTTP消息头中的字符,注入一些恶意的换行,就能注入一些会话cookie或者html代码,由于Nginx配置不正确,导致注入的代码会被执行。
2、 漏洞复现
访问页面,抓包
请求加上/%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>
由于页面重定向,并没有弹窗。
3、 漏洞修复
Nginx的配置文件/etc/nginx/conf.d/error1.conf修改为使用不解码的url跳转。
(五) 目录穿越
1、 漏洞简介及成因
Nginx反向代理,静态文件存储在/home/下,而访问时需要在url中输入files,配置文件中/files没有用/闭合,导致可以穿越至上层目录。
2、 漏洞复现
访问:http://192.168.139.128:8081/files/
访问:http://192.168.139.128:8081/files../
成功实现目录穿越:
3、 漏洞修复
Nginx的配置文件/etc/nginx/conf.d/error2.conf的/files使用/闭合。