影響版本:
該漏洞與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