昨晚黑锅在微博上发了老外爆的Nginx漏洞,开始并没几个人关注,小我马上架环境测试验证了,我人品好随手在网上试了两个网站也验证了这个漏洞,于是乎马上就在微博上传开了。
这个漏洞是7月20日发的,老外做了非常详细的分析,大家可以深入参考:
https://nealpoole.com/blog/2011/07/possible-arbitrary-code-execution-with-null-bytes-php-and-old-versions-of-nginx/
这里我就说说关于这个漏洞的几个隐蔽点和关键点:
一.老肉鸡变新肉鸡
大家应该还记得80sec发的nginx文件类型错误解析漏洞吧
http://www.80sec.com/nginx-securit.html
漏洞的利用方式是:
/test.jpg/x.php
临时解决方案是:
if ( $fastcgi_script_name ~ ..*/.*php ) {
return 403;
}
而新漏洞的利用方式是:
/test.jpg%00.php
对应fastcgi_script_name的匹配正则,我们会发现是匹不到这个漏洞的,所以非常杯具,以前被老nginx漏洞黑过的肉鸡还能被重新黑一次。
二.准确识别这个漏洞的方法.
一般这个漏洞需要在能够上传文件的应用中才能被利用,所以论坛首当其冲,象discuz论坛的两个文件就能非常方便的识别这个漏洞。
1.爆出PHP语法错误。
2.吃掉CGI #注释的第一行。
具体可以参考:http://www.91ri.org/1947.html,原理到在这里。
三. 漏洞影响范围
https://svn.nginx.org/nginx/browser/nginx#tags
nginx 0.7.65以下(0.5.*, 0.6.*, 0.7.* )全版本系列和0.8.37(0.8.*)以下8系列受影响。
实际上还是一些老版本受影响,但是国内很多最早追捧ngnix的公司,产品线上使用老版本的有漏洞的nginx不甚其多,特别是安全公司,所以小心被黑客黑了还浑然不觉。