在低于7.1.33的7.1版本, 低于7.2.24的7.2版本, 低于7.3.11的7.3版本,并启用了 PHP-FPM 的 NGINX 服务器上存在被利用远程执行代码的可能。

漏洞利用的条件

1、Nginx + php_fpm,且配置 location ~ [^/].php(/|$) 会将请求转发到php-fpm。

2、Nginx配置 fastcgi_split_path_info 并且以^开始以$,只有在这种条件下才可以通过换行符来打断正则表达式判断。
fastcgi_split_path_info ^(.+?.php)(/.*)$;

3、fastcgi_param中PATH_INFO会被定义通过 fastcgi_param PATH_INFO $fastcgi_path_info; ,当然这个变量会在fastcgi_params默认定义。

4、在nginx层面没有定义对文件的检查比如 try_files $uri =404,如果nginx层面做了文件检查,则请求不会被转发给php-fpm。

修复方法

临时修复

修改nginx相应的配置,并在php相关的配置中加入 try_files $uri =404 ,在这种情况下,nginx会去检查文件是否存在,当文件不存在时,请求都不会被传递到php-fpm。

正式修复

  • 将PHP 7.1.X更新至7.1.33及以上版本
  • 将PHP 7.2.X更新至7.2.24及以上版本
  • 将PHP 7.3.X更新至7.3.11及以上版本

漏洞原文地址

https://bugs.php.net/bug.php?id=78599


原文链接地址:http://blog.exsvc.cn/article/php-cve-2019-11043.html
转载请注明:转载自 易科博客 ,谢谢!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注