网络安全检测|网络安全服务|网络安全扫描-香港墨客投资移动版

主页 > 业界资讯 > ddos防御

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


  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示例配置的用户受到此漏洞影响

  示例配置如下:

  PHP FastCGI Example | NGINX

  漏洞证明:


  使用配置文件


  0x02 修复建议

  1. 修改 nginx 配配置文件中fastcgi_split_path_info的正则表达式,不允许.php之后传入不可显字符

  2. 暂停使用 nginx+php-fpm 服务

  3. 删除如下配置 fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info;

(责任编辑:admin)