比较熟知的一个漏洞,貌似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;
}