Nginx解析漏洞

php.ini中默认

cgi.fix_pathinfo=1

开启时,当php遇到文件路径/aaa.xxx/bbb.yyy/ccc.zzz时,若/aaa.xxx/bbb.yyy/ccc.zzz不存在,则会去掉最后的/ccc.zzz,然后判断/aaa.xxx/bbb.yyy是否存在,若存在,则把/aaa.xxx/bbb.yyy当做文件/aaa.xxx/bbb.yyy/ccc.zzz,若/aaa.xxx/bbb.yyy仍不存在,则继续去掉/bbb.yyy,以此类推。

若是关闭该选项,访问/test.jpg/test.php 只会返回找不到文件。但关闭该选项很可能会导致一些其他错误,所以一般是开启的。 开启后,如果php-fpm.conf中的security.limit_extensions参数,设置.jpg可执行

security.limit_extensions = .php .jpg
则会造成/test.jpg/test.php被解析