漏洞描述
此次漏洞主要由于 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上文的配置。