影响版本:
该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。
漏洞原理:
1、查看nginx配置:
可以看到这里将.php请求都转发给了php-fpm中进行处理
2、php-fpm对发送的.php请求处理
因为.php文件并不存在,如果php.ini配置文件中的cgi.fix_pathinfo=1存在,就会跳到上一层的路径
3、最重要的配置错误:
php-fpm.conf中的security.limit_extensions配置项限制了fastcgi解析文件的类型(即什么类型的文件才能当做代码解析),此项设置为空的时候才允许fastcgi将’.jpg’等文件当做代码解析
复现:
1、上传一句话图片马,并在后面加上/.php,就可以将我们上传的jpg文件解析为php代码
2、配置security.limit_extensions,并且重启docker环境
3、当我们再次想要用php-fpm将jpg文件解析为php代码时显示Access denied