新的PHP漏洞可能会让攻击者攻击Nginx服务器上运行的网站
发布时间:2022-03-14 04:38:31 536
相关标签:

该漏洞被追踪为CVE-2019-11043,影响具有特定PHP-FPM配置的网站,据报道,这种配置在野外并不罕见,并且可以很容易地被利用,因为该漏洞的概念验证(PoC)漏洞已经公开发布。
PHP-FPM是另一种PHP FastCGI实现,它为用PHP编程语言编写的脚本提供高级高效的处理。
主要漏洞是PHP-FPM模块中的一个“env_path_info”底流内存损坏问题,将其与其他问题链接在一起可能会允许攻击者在易受攻击的web服务器上远程执行任意代码。
Wallarm的安全研究员安德鲁·达瑙(Andrew Danau)在捕获旗帜竞赛中寻找漏洞时发现了该漏洞,随后他的两名研究员奥马尔·加尼耶夫(Omar Ganiev)和埃米尔·勒纳(Emil Lerner)将该竞赛武器化,以开发一个完全可以工作的远程代码执行漏洞。
哪些基于PHP的网站容易受到黑客攻击?
尽管公开发布的PoC漏洞专门针对运行PHP 7+版本的易受攻击服务器,但PHP-FPM下溢漏洞也会影响早期的PHP版本,并可能以不同的方式进行武器化。
简言之,在以下情况下,网站易受攻击:
- NGINX被配置为将PHP页面请求转发到PHP-FPM处理器,
- fastcgi_split_path_info指令出现在配置中,它包括一个以“^”符号开头、以“$”符号结尾的正则表达式,
- PATH_INFO变量由fastcgi_param指令定义,
- 没有像try_files$uri=404或if(-f$uri)这样的检查来确定文件是否存在。
此易受攻击的NGINX和PHP-FPM配置如下所示:

这里,fastcgi_split_path_info指令用于将PHP网页的URL拆分为两部分,一个帮助PHP-FPM引擎的值用于学习脚本名称,另一个包含其路径信息。
PoC RCE如何利用PHP FPM工作?
研究人员称,如图所示,定义fastcgi_split_path_info指令的示例正则表达式可以通过使用换行符进行操作,使split函数最终将path info设置为空。
接下来,由于FPM代码中有一个算术指针,它错误地假设env_path_info的前缀等于php脚本的路径,而没有实际验证服务器上是否存在该文件,攻击者可以利用该问题,通过请求目标网站精心编制的URL来覆盖内存中的数据。


在背景下,PoC漏洞[1(PHuiP FPizdaM),2]研究人员发布了将这两个问题结合在一起的链,以操纵内存并添加自定义php。如屏幕截图所示,目标服务器的PHP-FPM配置文件中存在ini值,允许攻击者使用web shell执行任意代码。

研究人员在一个bug中说:“通过使用精心选择的URL路径长度和查询字符串,攻击者可以使路径信息精确指向_fcgi_data_seg结构的第一个字节。将零放入其中会向后移动`char*pos`字段,随后的fcgi_PUTENV会用脚本路径覆盖一些数据(包括其他快速cgi变量)。”提交给PHP项目的报告。
“使用这种技术,我能够创建一个假的PHP_值fcgi变量,然后使用一系列精心选择的配置值来执行代码。”
发布PHP 7更新以修补FPM缺陷
如上所述,成功利用漏洞的先决条件列表并不少见,因为一些web托管提供商正在使用这些易受攻击的配置,这些配置在Internet上作为许多PHP FPM教程的一部分提供。
其中一家受影响的网络托管提供商是Nextcloud,他昨天发布了一条建议,警告其用户“默认的Nextcloud NGINX配置也容易受到这种攻击”,并建议系统管理员立即采取行动。
就在昨天,研究人员向PHP开发团队报告了该漏洞,将近一个月后,发布了针对该漏洞的补丁。
由于PoC漏洞已经可用,而且补丁就在昨天发布,黑客很可能已经开始扫描互联网,搜索易受攻击的网站。
因此,强烈建议用户将PHP更新为最新的PHP7.3.11和PHP7.2.24。即使没有使用易受攻击的配置,也要这样做。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报