nginx+php服务器中的SCRIPT_FILENAME漏洞
比较熟知的一个漏洞,貌似nginx代码上,至今没有进行修补。
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; }
详细在http://www.80sec.com/nginx-securit.html
具体实验,可以在nginx的log中,打开debug,查看获得的SCRIPT_FILENAME名称。
解决方法:
设置php.ini文件中的cgi.fix_pathinfo参数为0
或者
在nginx代码中加入:
if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}