文件解析漏洞
由php配置不当产生的漏洞,与nginx版本无关
php.ini文件中的cgi.fix_pathinfo的值为1时,fastcgi不认识用户上传的畸形文件会修复路径
再由php-fpm.conf中的security.limit_extensions配置为空时,导致文件解析漏洞
漏洞修复
1.cgi.fix_pathinfo=0
2.security.limit_extensions= .php
目录遍历
当nginx开启目录遍历配置的时候会出现该漏洞
在nginx.conf配置文件中添加autoindex onn 开启目录浏览 autoindex off关闭目录浏览
默认为关闭状态
漏洞修复
1.autoindex off关闭目录浏览
空字节代码执行漏洞
在使用PHP-Fastcgi执行php的时候,url中遇到%00与fastcgi处理不一致,可导致在非php文件中嵌入PHP代码,通过url+%00.php来执行其中的php代码
影响范围:
nginx 0.5.*
nginx 0.6.*
nginx 0.7 <= 0.7.65
nginx 0.8 <= 0.8.37
漏洞修复
1.修改fcgi.conf配置
if ($request_filename ~* (.*)\.php) {
set $php_url $1;
}
if (!-e $php_url.php) {
return 403;
}
2.升级版本
CVE-2017-7529 整数溢出漏洞
在 Nginx 的 range filter 中存在整数溢出漏洞,可以通过带有特殊构造的 range 的 HTTP 头的恶意请求
引发这个整数溢出漏洞,并导致信息泄露。
该漏洞影响所有 0.5.6 - 1.13.2版本内默认配置模块的Nginx只需要开启缓存攻击者即可发送恶意请求进
行远程攻击造成信息泄露。当Nginx服务器使用代理缓存的情况下攻击者通过利用该漏洞可以拿到服务
器的后端真实IP或其他敏感信息。
漏洞修复
1.升级版本
CRLF注入漏洞
在nginx的配置文件中,加上一句return 302 https://$host$uri
表示在用nginx会用https协议访问链接,并且返回一个302found给用户
其中的$uri是我们可以控制的,通过注入一个CRLF和两个CRLF来选择注入到http header还是http body。
漏洞修复
1.删除此配置
CVE-2013-4547文件名逻辑漏洞
根据nginx.conf文件中location中的定义,以.php结尾的文件都解析为php。若我们访问的文件名为shell.gif[0x20][0x00].php,该文件名以.php结尾可以被FastCGI接收,FastCGI在读取文件名时被00截断,导致读取的文件名为1.gif[0x20],配合limit_extensions为空即可利用成功。
Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
php-fpm.conf中的security.limit_extensions为空,也就是说任意后缀名都可以解析为PHP
漏洞修复
1.升级版本