近日,国外安全研究员公布了一个存在于 php-fpm 中的漏洞(CVE-2019-11043),在某些特定Nginx 配置中,该漏洞可能会导致远程代码执行。
漏洞存在于文件sapi/fpm/fpm/fpm_main.c(https://github.com/php/php-src/blob/master/sapi/fpm/fpm/fpm_main.c#L1140),其中假设env_path_info的前缀等于php脚本的路径,但是实际上代码不会检查此假设是否满足,缺少该检查会导致“path_info”变量中的指针无效。当在某些Nginx 配置中,攻击者可以使用换行符(编码格式为%0a)来破坏fastcgi_split_path_info
指令中的regexp,regexp损坏将导致空PATH_INFO,从而触发该漏洞。
据了解,该漏洞是研究员Andrew Danau在一场CTF比赛过程中偶然发现的,当他向服务器 URL发送 %0a 时,服务器返回异常,深入研究后发现此漏洞。
参考连接:
nginx + php-fpm环境中,使用如下 nginx 配置,所有 PHP 7+ 版本均受影响(PHP 7.0 、PHP 7.1 、PHP 7.2 、PHP 7.3 ),且目前在PHP 5.6 版本上也可造成崩溃。
特定的nginx配置如下:
1234567 | location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ... }} |
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
参考链接:
评论已关闭。