漏洞描述:
PHP是一种在服务器端执行的脚本语言,在 PHP 的 8.3.8 版本之前存在命令执行漏洞,由于 Windows 的 "Best-Fit Mapping" 特性,在处理查询字符串时,非ASCII字符可能被错误地映射为破折号(-),导致命令行参数解析错误,当 php_cgi 运行在Windows平台上,且代码页为繁体中文、简体中文或日文时,攻击者可以通过特定的查询字符串注入恶意参数,从而执行任意代码。
漏洞复现:
1.访问漏洞环境
2.漏洞利用
影响范围:
PHP 8.3 < 8.3.8
PHP 8.2 < 8.2.20
PHP 8.1 < 8.1.29
注:该漏洞影响安装于Windows系统上的PHP版本,由于PHP 8.0 分支、PHP 7 以及PHP 5 官方已不再维护,网站管理员可查看是否受该漏洞影响并应用相关缓解措施。
安装系统为Windows
存在 cgi-bin/php-cgi.exe 文件
修复方案:
将组件 php 升级至 8.3.8 及以上版本
将组件 php 升级至 8.2.20 及以上版本
将组件 php 升级至 8.1.29 及以上版本
升级版本
目前该漏洞已经修复,受影响用户可升级到PHP版本8.3.8、8.2.20、8.1.29或更高版本。
下载链接:
https://github.com/php/php-src/tags
临时措施:
Windows平台中Apache HTTP Server 加上PHP 组合、XAMPP for Windows安装的以下场景可能易受该漏洞影响:
1.将PHP 设定于CGI 模式下执行。在Apache Httpd 配置文件中通过Action语法将对应的HTTP 请求交给PHP-CGI脚本文件处理时,受此漏洞影响,常见设定包含但不限于:
AddHandler cgi-script.php
Action cgi-script "/cgi-bin/php-cgi.exe"
或
<FilesMatch ".php$">
SetHandler application/x-httpd-php-cgi
</FilesMatch>
Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe"
2.将PHP脚本文件暴露在外(XAMPP 预设安装设定)。将PHP 脚本文件暴露在CGI 目录下也受此漏洞影响,常见情况包含但不限于:
1) 将php.exe或php-cgi.exe复制到/cgi-bin/目录中
2) 将PHP 安装目录通过ScriptAlias暴露到外,如:
ScriptAlias /php-cgi/ "C:/xampp/php/"
缓解:
l.升级到最新的PHP 版本
2.清理并验证输入参数
3.使用安全配置设置来限制 CGI 参数处理
原文始发于微信公众号(飓风网络安全):【漏洞复现】PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论