漏洞分析 | PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)

💡 原文中文,约4100字,阅读约需10分钟。
📝

内容提要

PHP CGI是一种在Windows平台上运行PHP的方式,最近发布了安全更新修复了远程代码执行漏洞。漏洞易于利用,建议受影响的企业尽快升级修复。

🔎

延伸解读

漏洞利用条件与影响范围

该漏洞利用需要满足特定条件:PHP运行在Windows平台,且系统使用繁体中文、简体中文或日语。攻击者通过构造恶意请求绕过对字符'-'的过滤,利用Windows的Best-Fit编码转换特性,将软连字符(0xAD)传递给PHP,从而注入命令行参数。受影响版本包括PHP 8.3 < 8.3.8、8.2 < 8.2.20、8.1 < 8.1.29。文章指出关联web服务资产总数达134318个,独立IP数为61655个,表明潜在影响面较广。

与CVE-2012-1823的关联及修复思路

CVE-2024-4577绕过了CVE-2012-1823对字符'-'的过滤。CVE-2012-1823中,攻击者可将恶意数据作为php-cgi参数执行。本次修复在cgi_main.c中新增对Windows环境的判断,使用WideCharToMultiByte函数进行宽字节转换,并限制0x80以上字符,从而阻止参数注入。文章分析指出,修复代码在检测到字符串开头为'-'时阻止参数传递,但需注意独立脚本方式运行的PHP脚本可能受影响。

临时缓解措施与长期建议

对于无法立即升级的用户,文章提供了临时缓解方案:在Apache配置中添加Rewrite规则阻止以%ad开头的查询字符串,但该规则仅对繁体中文、简体中文和日语环境有效。XAMPP用户若无需PHP CGI功能,可注释掉ScriptAlias行。长期来看,建议迁移至Mod-PHP、FastCGI或PHP-FPM等更安全的架构。官方已发布8.3.8、8.2.20、8.1.29版本,建议受影响企业尽快升级。

漏洞复现与利用细节

文章通过两个POC展示了漏洞利用过程。POC1通过%ad代替'-',注入参数如cgi.force_redirect、allow_url_include和auto_prepend_file,实现远程代码执行。POC2则省略cgi.force_redirect,改用REDIRECT-STATUS头,同样成功执行代码。这些POC表明漏洞易于利用,攻击者可通过参数注入执行任意命令。网宿全站防护-WAF已支持对该漏洞的防护,并持续分析变种攻击。

❓

Q&A

CVE-2024-4577漏洞的主要影响是什么?

CVE-2024-4577漏洞允许攻击者通过参数注入在PHP服务器上远程执行任意代码。

如何修复PHP CGI Windows平台的远程代码执行漏洞?

可以通过升级到新版本(如8.3.8、8.2.20、8.1.29)或在Apache配置中添加规则来阻止攻击。

哪些PHP版本受到CVE-2024-4577漏洞的影响?

受影响的PHP版本包括8.3 < 8.3.8、8.2 < 8.2.20、8.1 < 8.1.29。

CVE-2024-4577漏洞是如何产生的?

该漏洞产生的原因是绕过了对字符'-'的过滤,允许攻击者通过参数注入攻击。

建议迁移到哪些更安全的PHP架构?

建议迁移至Mod-PHP、FastCGI或PHP-FPM等更为安全的架构。

该漏洞的网络安全产品防护措施有哪些?

网络安全产品已对该漏洞利用攻击提供防护,并持续分析其他变种攻击方式。

🏷️

标签

➡️

继续阅读