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

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

cexlife 飓风网络安全 2024-06-08 20:27

漏洞描述:

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.phpAction cgi-script “/cgi-bin/php-cgi.exe” 或    SetHandler application/x-httpd-php-cgiAction 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 参数处理