CVE-2019-11043: PHP-FPM在Nginx特定配置下任意代码执行漏洞预警
2019-10-23 18:43
报告编号:B6-2019-102301
报告来源:360-CERT
报告作者:360-CERT
更新日期:2019-10-23
0x00 漏洞背景
2019年10月23日, 360CERT监测到 PHP 官方发布了在 nginx
配置不当的情况下 php-fpm 可导致远程代码执行的漏洞更新。
360CERT判断漏洞等级为中危,影响面有限。
但由于是配置文件的开放性。还请使用 nginx+php-fpm
的服务管理员/运维人员及时做好自查自检工作。
0x01 漏洞详情
在 https://github.com/php/php-src/blob/master/sapi/fpm/fpm/fpm_main.c#L1150
中由于\n
(%0a)的传入导致nginx
传递给php-fpm
的PATH_INFO
为空。
进而导致可以通过FCGI_PUTENV
与PHP_VALUE
相结合,修改当前的php-fpm
进程中的php配置。在特殊构造的配置生效的情况下可以触发任意代码执行。
注:完全复制Nginx官方给出的php-fpm示例配置的用户不受到此漏洞影响
示例配置如下:
漏洞证明:
使用配置文件
0x02 修复建议
- 修改 nginx 配置文件中
fastcgi_split_path_info
的正则表达式,不允许.php
之后传入不可显字符 - 暂停使用 nginx+php-fpm 服务
- 删除如下配置
fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info;
0x03 时间线
2019-10-21 PHP 官方发布漏洞更新
2019-10-23 360CERT发布预警