Nginx+PHP 配置漏洞:静态文件都可以当作 PHP 解析
漏洞危险等级:毁灭性。
这个漏洞严格上说并不是 Nginx 和 PHP 本身的漏洞造成的,而是由配置造成的。在我之前写的许多配置中,都普遍存在这个漏洞。
简易检测方法:
打开 Nginx + PHP 服务器上的任意一张图片,如:
如果在图片链接后加一串 /xxx.php (xxx为任意字符)后,如:
图片还能访问的话,说明你的配置存在漏洞。
漏洞分析:
下面通过分析一个很常见的 Nginx 配置来解释下漏洞的成因:
server {
listen 80;
server_name test.local;
access_log /work/www/logs/test.access.log main;
error_log /work/www/logs/test.error.log;
location / {
root /work/www/test;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /work/www/test;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass unix:/t