如何解决PHP远程代码执行漏洞预警

发布时间:2021-10-18 10:44:51 作者:柒染
来源:亿速云 阅读:186

这期内容当中小编将会给大家带来有关如何解决PHP远程代码执行漏洞预警,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

在2019年9月26日,PHP官方发布了一则漏洞公告,此次漏洞公告中官方披露了一个远程代码执行漏洞,该漏洞是因PHP-FPM中的fpm_main.c文件的env_path_info下溢而导致的。该漏洞存在于PHP-FPM + Nginx组合使用并采用一定配置的情况下。该漏洞PoC已在2019年10月22日公布,PHP与Nginx组合使用的情况较为广泛,攻击者可利用该漏洞远程执行任意代码,所以危害性较大。

PHP-FPM组件介绍

PHP-FPM(FastCGI流程管理器)是另一种PHP FastCGI实现,具有一些其他功能,可用于各种规模的站点,尤其是繁忙的站点。

对于PHP 5.3.3之前的php来说,PHP-FPM是一个补丁包,旨在将FastCGI进程管理整合进PHP包中。如果你使用的是PHP 5.3.3之前的PHP的话,就必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。而PHP 5.3.3已经集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。

漏洞描述

该漏洞是PHP-FPM中的fpm_main.c文件的env_path_info下溢导致,在sapi/fpm/fpm/fpm_main.c文件中的第1140行包含pointer arithmetics,这些pointer arithmetics假定env_path_info的前缀等于php脚本的路径。但是,代码不会检查这些假设是否被满足,缺少检查会导致”path_info”变量中的指针无效。

这样的条件可以在标准的Nginx配置中实现。如果有这样的Nginx配置:

攻击者可以使用换行符(编码格式为%0a)来破坏`fastcgi_split_path_info`指令中的regexp。regexp损坏将导致空PATH_INFO,从而触发该错误。

这个错误会导致代码执行漏洞。在后面的代码中,path_info[0]的值设置为0,然后再调用FCGI_PUTENV。攻击者可以使用精心选择的URL路径长度和查询字符串,使path_info精确地指向_fcgi_data_seg结构的第一个字节。然后将0放入其中则‘char* pos’字段向后移动,然后FCGI_PUTENV使用脚本路径覆盖一些数据(包括其他快速cgi变量)。使用这种技术,攻击者可以创建一个伪PHP_VALUE fcgi变量,然后使用一系列精心选择的配置值来执行代码。

影响产品:

在2019-09-26更新之前下载的PHP-FPM,且必须为Nginx + php-fpm 的服务器使用如下配置,会受到影响。

深信服解决方案

深信服下一代防火墙可防御此漏洞, 建议部署深信服下一代防火墙的用户开启安全防御模块,可轻松抵御此高危风险。

深信服云盾已第一时间从云端自动更新防护规则,云盾用户无需操作,即可轻松、快速防御此高危风险。

修复建议

1.如果业务不需要以下配置,建议用户删除:

2.使用github中的最新的PHP版本


上述就是小编为大家分享的如何解决PHP远程代码执行漏洞预警了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. Windows远程代码执行漏洞及Microsoft Excel远程代码执行漏洞的示例分析
  2. 远程代码执行漏洞实例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php

上一篇:10 个解放双手超实用在线工具有哪些

下一篇:字符串 len == 0 和 字符串== "" 的区别有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》