Nginx最新解析漏洞

昨晚黑锅在微博上发了老外爆的Nginx漏洞,开始并没几个人关注,小我马上架环境测试验证了,我人品好随手在网上试了两个网站也验证了这个漏洞,于是乎马上就在微博上传开了。

这个漏洞是7月20日发的,老外做了非常详细的分析,大家可以深入参考:

这里我就说说关于这个漏洞的几个隐蔽点和关键点:

一.老肉鸡变新肉鸡

大家应该还记得80sec发的nginx文件类型错误解析漏洞吧:http://www.2cto.com/Article/201005/47604.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.2cto.com/Article/201101/81627.html
原理到在这里。

三. 漏洞影响范围

nginx 0.7.65以下(0.5.*, 0.6.*, 0.7.* )全版本系列和0.8.37(0.8.*)以下8系列受影响。

实际上还是一些老版本受影响,但是国内很多最早追捧ngnix的公司,产品线上使用老版本的有漏洞的nginx不甚其多,特别是安全公司,所以小心被黑客黑了还浑然不觉。



  1. server {  
  2.  ...  
  3.     location / {  
  4.         index  index.htm index.html index.php;  
  5.         #访问路径的文件不存在则重写URL转交给ThinkPHP处理  
  6.         if (!-e $request_filename) {  
  7.            rewrite  ^/(.*)$  /index.php/$1  last;  
  8.            break;  
  9.         }  
  10.     }  
  11.     location ~ \.php/?.*$ {  
  12.         root        /var/www/html/website;  
  13.         fastcgi_pass   127.0.0.1:9000;  
  14.         fastcgi_index  index.php;  
  15.         #加载Nginx默认"服务器环境变量"配置  
  16.         include        fastcgi.conf;  
  17.           
  18.         #设置PATH_INFO并改写SCRIPT_FILENAME,SCRIPT_NAME服务器环境变量  
  19.        
  20.         if ( $fastcgi_script_name ~ \..*\/.*php ) {
  21.            ...........
  22.         }  
  23.        
  24.     }  


你可能感兴趣的:(Nginx最新解析漏洞)