漏洞描述
此次漏洞主要由於 PHP-FPM 中 sapi/ fpm/ fpm/ fpm_main.c 文件內的 env_path_info 下溢導致,攻擊者可以使用換行符 %0a 破壞 Nginx 中 fastcgi_split_path_info 對應的正則表達式,導致傳遞給 PHP-FPM 的 PATH_INFO 值為空,從而觸發該漏洞,通過發送特制的URL請求,在一些特殊的配置情況下會導致任意代碼執行。
影響范圍
使用 Nginx + PHP-FPM 的服務器,且在 nginx 下進行了如下配置,都可能存在遠程代碼執行漏洞。
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
...
}
漏洞復現
1.正常訪問靶機環境

2.執行exp后訪問

漏洞修復
1.更新官網補丁:https://bugs.php.net/patch-display.php?bug_id=78599&patch=0001-Fix-bug-78599-env_path_info-underflow-can-lead-to-RC.patch&revision=latest
2.檢查nginx上文的配置。
