长亭百川云 - 文章详情

PHP CGI参数注入漏洞(CVE-2024-4577) 分析

ADLab

44

2024-07-13

更多安全资讯和分析文章请关注启明星辰ADLab微信公众号及官方网站(adlab.venustech.com.cn)

一、漏洞描述

2024年6月6日,PHP官方发布了多个新版本,其中都包含对编号为CVE-2024-4577的安全漏洞的修复更新。该漏洞是PHP CGI的参数注入漏洞,是对CVE-2012-1823漏洞的修复绕过。

该漏洞产生的原因是:在PHP CGI模式下,未正确处理Windows系统中的“Best-Fit Mapping”特性,导致简体中文、繁体中文、日文或其他受影响语言环境将某些字符错误的识别成了'-'。攻击者可通过引入恶意参数实现任意代码执行。

二、漏洞复现

如下图所示:

三、漏洞分析

CVE-2012-1823补丁的修复措施是,PHP处理传递进来的字符串时,在跳过前面空白符后,判断第一位是否是'-';如果是'-',就不对后面的字符进行参数解析,比如-d,-s,-c等参数。

PHP官方的commit如下图所示:

可以看到,当运行系统环境为Windows时,PHP调用WideCharToMultiByte函数来加强对宽字符的判断。如果转换后的字符为'-',则将skip_getopt置为1,使得后续就不会对传入的字符串进行参数解析。

那么,什么样的宽字符能够转换后变成'-',从而绕过之前的修复呢?

以受影响的简体中文、繁体中文、日文举例,他们对应的Windows 代码页分别是936、950、932。其中都有将0x00ad映射为0x002d的操作,如下图所示:

因此通过引入0x00ad即可替代0x002d,实现参数注入来执行任意代码。

四、总结

CVE-2024-4577漏洞利用简单,危害严重。特别在某些对Apache、PHP进行集成部署和管理的流行软件中,如果未正确配置php cgi,即可造成严重危害。

参考链接:

PHP官方commit

https://github.com/php/php-src/commit/4dd9a36c165974c84c4217aa41849b70a9fc19c9

DEVCORE的漏洞通报

https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability/

启明星辰积极防御实验室(ADLab)

ADLab成立于1999年,是中国安全行业最早成立的攻防技术研究实验室之一,微软MAPP计划核心成员,“黑雀攻击”概念首推者。截至目前,ADLab已通过 CNVD/CNNVD/NVDB/CVE累计发布安全漏洞5000余个,持续保持国际网络安全领域一流水准。实验室研究方向涵盖基础安全研究、数据安全研究、5G安全研究、人工智能安全研究、移动安全研究、物联网安全研究、车联网安全研究、工控安全研究、信创安全研究、云安全研究、无线安全研究、高级威胁研究、攻防体系建设。研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2