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;

}