[TOC]
注意:本文分享给安全从业人员、网站开发人员以及运维人员在日常工作防范恶意攻击,请勿恶意使用下面介绍技术进行非法攻击操作。。
CVE-2017-7529 (溢出漏洞) 描述: Nginx range 过滤器整形溢出漏洞 漏洞信息: 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造 range 域的 header 请求,来获取响应中的缓存文件头部信息。在某些配置中缓存文件头可能包含后端服务器的IP地址或其它敏感信息,从而导致信息泄露。 漏洞影响: 当Nginx服务器使用代理缓存的情况下攻击者通过利用该漏洞可以拿到服务器的后端真实IP或其他敏感信息;通过我们的分析判定该漏洞利用难度低可以归属于low-hanging-fruit的漏洞在真实网络攻击中也有一定利用价值。 影响版本: Nginx version 0.5.6 - 1.13.2 漏洞利用:
[TOC]
注意:本文分享给安全从业人员、网站开发人员以及运维人员在日常工作防范恶意攻击,请勿恶意使用下面介绍技术进行非法攻击操作。。
CVE-2017-7529 (溢出漏洞) 描述: Nginx range 过滤器整形溢出漏洞 漏洞信息: 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造 range 域的 header 请求,来获取响应中的缓存文件头部信息。在某些配置中缓存文件头可能包含后端服务器的IP地址或其它敏感信息,从而导致信息泄露。 漏洞影响: 当Nginx服务器使用代理缓存的情况下攻击者通过利用该漏洞可以拿到服务器的后端真实IP或其他敏感信息;通过我们的分析判定该漏洞利用难度低可以归属于low-hanging-fruit的漏洞在真实网络攻击中也有一定利用价值。 影响版本: Nginx version 0.5.6 - 1.13.2 漏洞利用:1 2 3 4 5 6 7 $ curl -I http://127.0.0.1:8000/proxy/demo.png Content-Length: 16585 $ curl -i http://127.0.0.1:8000/proxy/demo.png -r -17208,-9223372036854758600
weiyigeek.top-
Nginx文件类型错误解析漏洞 描述:Nginx漏洞分析实例,在2010年的时候国内安全组织80Sec发现了一个Nginx文件类型解析漏洞,但实际上这个并非Nginx本身的漏洞,而是由于配置导致的安全问题。 漏洞危害:利用该漏洞,攻击者可以将任意文件类型作为PHP文件解析。 漏洞分析:Nginx默认是以CGI的方式支持PHP的解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。 配置文件中会有类似如下内容: 问题产生: location对请求进行选择的时候会使用URI环境变量进行选择,其中传递到后端Fastcgi的关键变量 SCRIPT_FILENAME
, 然后是由Nginx生成的$fastcgi_script_name
来决定的;通过分析可以看到$fastcgi_script_name是直接由URI环境变量控制的这里就是产生问题的点; 当访问 http://192.168.1.103/phpinfo.jpg/1.php这个URL时 $fastcgi_script_name会被设置为“phpinfo.jpg/1.php “ ,然后构造成SCRIPT_FILENAME传递给PHP CGI; 但是PHP为什么会接受这样的参数,并将phpinfo.jpg作为PHP文件解析呢? 到这里PHP会认为SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就会将phpinfo.jpg作为PHP文件来解析了。
漏洞利用:假设某一服务器存在该漏洞,攻击者可以通过上传一张包含PHP后门代码的图片来获取WebShell,这是一种常见的攻击方式。 POC: 访问一个nginx来支持php的站点,在一个任何资源的文件如robots.txt后面加上/80sec.php,这个时候你可以看到如下的区别:1 2 3 4 5 6 7 8 9 10 11 12 HTTP/1.1 200 OK Server: nginx/0.6.32 Date: Thu, 20 May 2010 10:05:30 GMT Content-Type: text/plain HTTP/1.1 200 OK Server: nginx/0.6.32 Date: Thu, 20 May 2010 10:06:49 GMT Content-Type: text/html
解决办法:1 2 3 4 5 6 7 8 php.ini文件将 cgi.fix_pathinfo 的值设置为0 if ( $fastcgi_script_name ~ \..*\/.*php ) { return 403; }
Nginx配置错误而导致目录遍历漏洞 1 2 3 4 5 location /test { alias html/test /; autoindex on; }