PHP-FPM在Nginx特定配置下任意代码执行漏洞预警

0x01 前言
2019年10月23日,PHP官方发布了在 nginx 配置不当的情况下 php-fpm 可导致远程代码执行的漏洞。
但由于是配置文件的开放性,还请使用 nginx+php-fpm 的服务管理员/运维人员及时做好自查自检工作。
0x02 漏洞详情
在
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示例配置的用户受到此漏洞影响
示例配置如下:
PHP FastCGI Example | NGINX
0x03 漏洞证明:

使用配置文件

0x04 修复建议
- 修改 nginx 配配置文件中fastcgi_split_path_info的正则表达式,不允许.php之后传入不可显字符
- 暂停使用 nginx+php-fpm 服务
- 删除如下配置
fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info;
相关推荐
-
unix或centos离线安装jdk和nginx操作说明2023-10-23 15:41:26
-
Nginx自定义数据结构之字符串(String)数组(Array)链表(List)
Nginx自定义数据结构之字符串(String)数组(Array)链表(List)2023-10-23 15:41:09 -
Nginx的配置详解2023-10-23 15:40:54
-
PHP的另类解析2023-10-23 15:40:14
-
PHP 扩展 PEAR 安装包文件被污染,服务下线2023-10-23 15:39:53