漏洞描述
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 设定于 CGI 模式下执行
在 Apache Httpd 配置文件中通过 语法将对应的 HTTP 请求交给 PHP-CGI 运行文件处理时,受此弱点影响,常见设置包含但不限于:Action
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"
情境二
情境二: 将 PHP 运行文件暴露在外 ( XAMPP 默认安装配置)
即使未配置 PHP 于 CGI 模式下执行,仅将 PHP 运行文件暴露在 CGI 目录下也受此弱点影响,常见情况包含但不限于:
- 将
php.exe
或php-cgi.exe
复制到/cgi-bin/
目录中 - 将 PHP 安装目录通过 暴露到外,如:
ScriptAlias
ScriptAlias /php-cgi/ "C:/xampp/php/"
修补建议
- 更新到PHP官方发布的最新PHP版本
- 如无法更新建议编写Rewrite 规则阻止攻击,注意:此份规则只作为繁体中文、简体中文及日文语系中的暂时性缓解机制,建议以更新版本进行修复
RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? - [F,L]
漏洞复现
THE END
- 最新
- 最热
只看作者