01 SOP基本信息
SOP名称:PHP CGI代码注入漏洞(CVE-2024-4577)处置标准作业程序(SOP)
版本:1.0
发布日期:2025-04-08
作者:just4fun
审核人:T小组
修订记录:
初始版本:创建SOP
02 SOP的用途
本SOP旨在指导系统管理员安全、高效地处置 PHP CGI代码注入漏洞(CVE-2024-4577),确保在规定时间内完成漏洞修复并提交给安全部门验证,保障系统安全。
03 SOP的目标用户技能要求
熟悉PHP语言、PHP程序的安装配置和管理
了解基本的系统管理和更新操作
具备基本的网络安全知识
04 漏洞详细信息
漏洞名称:PHP CGI 代码注入漏洞(CVE-2024-4577)
CVE编号:CVE-2024-4577
漏洞类型:远程代码执行(RCE)
风险等级:高危
CVSS评分:9.8
漏洞描述:在PHP 8.1.29之前的8.1.*版本、8.2.20之前的8.2.*版本和8.3.8之前的8.3.*版本中,当在Windows上使用Apache和PHP-CGI时,如果系统设置为使用某些代码页,则Windows可以使用“Best-Fit”行为来替换为Win32 API函数提供的命令行中的字符。PHP CGI模块可能会将这些字符误解为PHP选项,这可能会允许恶意用户将选项传递给正在运行的PHP二进制文件,从而泄露脚本的源代码,在服务器上运行任意PHP代码等。
影响范围:
8.1.0 <= PHP < 8.1.29
8.2.0 <= PHP < 8.2.20
8.3.0 <= PHP < 8.3.8
PHP 8.0、7.x、5.x等已停止维护的分支同样受影响。
XAMPP Windows版影响版本 <= 8.2.12
XAMPP windows版影响版本 <= 8.1.25
XAMPP Windows版影响版本 <= 8.0.30
漏洞利用需要同时满足以下条件:
PHP运行在Window平台。
以CGI模式运行的PHP环境。
使用以下其中之一的语言系统:繁体中文、简体中文、日文。
升级到安全版本:
PHP >= 8.1.29
PHP >= 8.2.20
PHP >= 8.3.8
临时缓解方案:
对于使用 XAMPP for Windows 的用户:截至本文撰写时(2025/04/08),XAMPP 尚未针对此漏洞发布相应的更新文件。如果确认不需要 PHP CGI 功能,可以通过修改以下 Apache HTTP Server 配置来避免受到该漏洞的影响。
C:/xampp/apache/conf/extra/httpd-xampp.conf # apache的安装目录配置文件
找到相应的行:
ScriptAlias /php-cgi/ "C:/xampp/php/"
最前面加上”#”将其注释掉:
# ScriptAlias /php-cgi/ "C:/xampp/php/"
【注意事项】
在应用补丁或升级版本之前,请确保进行充分的备份。
遵循官方提供的安装和配置指南进行操作。
在生产环境中升级前,最好在测试环境中先进行测试。
修复漏洞前进行充分测试,以确保系统稳定性和安全性。
不同版本系列尽量升级到本系列版本无漏洞的版本,尽量不要版本跨度太大,避免出现一些不兼容情况。
06 漏洞修补详细步骤
1. 识别漏洞:确认当前版本和配置存在漏洞(使用POC辅助验证)
以Windows Server 2016为例,IP地址为192.168.174.128,XAMPP版本为8.1.25,安装路径为 C:xampp
。
首先检查是否安装了漏洞版本。打开XAMPP,控制台日志可以显示版本号为8.1.25为漏洞版本。
点击Shell ,输入php -v
可以显示当前php的版本号8.1.25,为漏洞版本。
使用默认配置,点击Apache后面的Start按钮,启动Apache服务,默认服务地址为http://192.168.174.128/。
另一个页面http://192.168.174.128/dashboard/phpinfo.php可以看到当前php的信息。
接下来使用如下POC进行辅助漏洞验证,使用BurpSuite发送数据包,根据回显发现执行了dir 命令显示了目录下的文件,验证漏洞存在。
GET /php-cgi/php-cgi.exe?%ADd+cgi.force_redirect%3d0+%ADd+cgi.redirect_status_env+%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/1.1
Host: 192.168.174.128
Connection: close
Cache-Control: max-age=0
sec-ch-ua: "Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Content-Length: 22
<?php system("dir");?>
2. 实施修复:目标是安装PHP的 安全版本8.1.29。
确认Windows版本:确认Windows系统是32位还是64位,可以在“我的电脑”或“此电脑”的属性中查看。
打开浏览器,访问PHP官网的Windows版本下载链接(https://windows.php.net/downloads/releases/archives/),下拉找到版本8.1.29,点击zip链接进行下载。
然后根据系统版本下载64位或32位的。因环境为64位系统,下载文件为php-8.1.29-Win32-vs16-x64.zip,将其放置到待修复环境中解压缩即可使用,存放目录为C:UsersserverDesktopphp-8.1.29-Win32-vs16-x64。
接下来停止服务,点击Apache后面的Stop按钮。然后修改XAMPP中的PHP版本,点击Apache后面的Coinfig按钮,选择httpd-xampp.conf,打开此文件。
替换此文件中的PHP安装路径,例如将原来的C:/xampp/php/全部修改为C:/Users/server/Desktop/php-8.1.29-Win32-vs16-x64/,保存配置文件。
3. 验证修复:PHP版本号已经升级到了8.1.29
点击Apache后面的Start按钮,再次启动Apache服务。
访问http://192.168.174.128/dashboard/phpinfo.php,可以看到PHP版本号已经升级到了8.1.29。
再次使用POC进行验证,发现已经无法执行命令了,证明漏洞已经修复。
4. 参考链接
[1] CVE-2024-4577 PHP CGI 远程代码执行漏洞分析
[2] CVE-2024-4577-NVD
- End -
欢迎投稿或扫码添加运营助手获取附件▽
欢迎关注公众号
▽
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...