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

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

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

内容提要

2024年8月,@Orange发布了他即将在2024年8月Black Hat USA公开的议题《Confusion Attacks: Exploiting Hidden Semantic Ambiguity in Apache HTTP Server!》。漏洞通报指出存在于windows特殊场景下的PHP CGI远程代码执行漏洞。漏洞利用条件是必须是Windows环境,并且使用繁体中文、简体中文或日文语言系统。漏洞影响范围包括PHP 8.3 < 8.3.8、PHP 8.2 < 8.2.20和PHP 8.1 < 8.1.29等版本。漏洞利用条件还包括以CGI模式运行的PHP环境和XAMPP默认配置。漏洞导致最终的任意代码执行。

🎯

关键要点

  • 2024年8月,@Orange将在Black Hat USA公开议题《Confusion Attacks: Exploiting Hidden Semantic Ambiguity in Apache HTTP Server!》。
  • 存在于Windows特殊场景下的PHP CGI远程代码执行漏洞,CVE-2024-4577。
  • 漏洞影响PHP 8.3 < 8.3.8、PHP 8.2 < 8.2.20和PHP 8.1 < 8.1.29等版本。
  • 漏洞利用条件包括必须在Windows环境下,使用繁体中文、简体中文或日文语言系统。
  • Windows系统内字符编码转换的Best-Fit特性导致PHP的安全限制被绕过。
  • 漏洞利用需要以CGI模式运行的PHP环境,且XAMPP的默认配置受到影响。
  • 通过传递特定参数(如%ad)可以构成参数注入,导致任意代码执行。
  • XAMPP默认配置将PHP的执行程序暴露在外,增加了安全风险。
  • PHP的cgi.force_redirect配置可以被绕过,导致安全隐患。

延伸问答

CVE-2024-4577漏洞的影响范围是什么?

该漏洞影响PHP 8.3 < 8.3.8、PHP 8.2 < 8.2.20和PHP 8.1 < 8.1.29等版本,理论上影响所有PHP版本。

利用CVE-2024-4577漏洞需要满足哪些条件?

必须在Windows环境下,使用繁体中文、简体中文或日文语言系统,并以CGI模式运行PHP环境。

CVE-2024-4577漏洞是如何被利用的?

通过传递特定参数(如%ad),可以构成参数注入,导致任意代码执行。

XAMPP的默认配置如何影响CVE-2024-4577漏洞?

XAMPP的默认配置将PHP的执行程序暴露在外,增加了安全风险,且其配置允许直接调用php-cgi.exe。

CVE-2024-4577漏洞的根本原因是什么?

漏洞的根本原因是Windows系统内字符编码转换的Best-Fit特性,导致PHP的安全限制被绕过。

如何防范CVE-2024-4577漏洞?

建议避免在Windows环境下使用CGI模式运行PHP,或及时更新到不受影响的PHP版本。

➡️

继续阅读