嵌套反序列化的危害:Magento XXE 漏洞分析(CVE-2024-34102)

2024-12-31 18 0

前言

Magento 是当前网络上最受欢迎的电子商务解决方案之一,截至2023年末,全球超过 140000 个 Magento 实例正在运行。2024年6月11日,Adobe 发布的安全公告指出,Adobe Commerce/Magento 存在一个严重的未经认证的 XML 实体注入问题(CVE-2024-34102),其 CVSS 评分高达 9.8,充分表明了这一漏洞的极端危急性。

为了深入了解此漏洞的危害性,本文将对其进行全面分析,并构建概念验证工具(PoC)来验证漏洞的实际可利用性。通过这种方式,将详细揭示漏洞的潜在影响及可能带来的安全风险,为读者提供深入的理解,帮助其在实际应用中采取有效的防护措施。

该漏洞的严重性主要体现在以下几个方面:

  • 敏感信息泄露:攻击者能够从 Magento 中提取包含用于签署 JWT 的加密密钥的 app/etc/env.php 文件。这一泄露使得攻击者有能力伪造管理员 JWT,从而以管理员身份滥用受影响实例的 Magento API。
  • 远程代码执行的风险:此漏洞可以与近期涉及 PHP 过滤器链的研究结合利用,从而通过 CVE-2024-2961 漏洞实现远程代码执行(RCE)。对此,应特别感谢 Charles Fol 的贡献。
  • 广泛的影响:攻击者通过利用 XXE 漏洞,能够提取任何本地文件或远程 URL 的内容,造成严重的安全隐患。

为了进一步了解未打补丁版本的 Magento 与已打补丁版本之间的关键差异,从 Magento GitHub 仓库下载了未打补丁的 magento2-2.4.7.zip 和已打补丁的 magento2-2.4.7-p1.zip 文件。通过解压这些文件并在两个目录上运行 DiffMerge,发现了关于该漏洞的重要线索:

嵌套反序列化的危害:Magento XXE 漏洞分析(CVE-2024-34102)插图

2.4.7-p1 中的新增更改

通过公开信息,清楚地意识到该漏洞与实例化 SimpleXMLElement 类有关。PHP 对该类的文档显示,dataIsURL 是可以传递给 SimpleXMLElement 构造函数的参数,允许从外部源加载 XML。单独阻止 dataIsURL 并不足以解决问题,因为该漏洞在没有此限制的情况下同样可以被利用。缓解措施则集中在阻止关键字 sourceData。基于这些信息,花费大量时间搭建 Magento 的开发环境,并寻找能够引导实例化带有可控参数的 SimpleXMLElement 的反序列化工具。

在处理复杂的反序列化问题时,强烈建议建立一个可以通过设置断点调试代码的开发环境。针对 Magento 2,使用了包含 XDebug 的 Docker 镜像,并为 PhpStorm 配置了相应的设置。在启动 Docker 镜像后,可以使用以下命令安装并填充 Magento 示例数据:

./scripts/composer create-project --repository-url=https://repo.magento.com/magento/project-community-edition=2.4.7 /home/magento#2.4.7是漏洞版本

./scripts/magento setup:install --base-url=http://magento2.test/ --db-host=mysql --db-name=magento_db --db-user=magento_user --db-password="PASSWD#" --admin-firstname=admin --admin-lastname=admin [email protected] --admin-user=admin --admin-password=admin1! --language=en_US --currency=USD --timezone=America/Chicago --use-rewrites=1 --search-engine opensearch --opensearch-host=opensearch --opensearch-port=9200

./scripts/magento sampledata:deploy

./scripts/magento setup:upgrade

在 Magento 2 的代码库中搜索 Simplexml\Element.*sourceData 时,确定了以下几个可能的攻击目标位置:

~/Downloads/magento2-2.4


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

记一次实战登陆口Js逆向分析
记一次CNVD证书的挖掘方式
Windows基线加固:Windows基线检查及安全加固手工实操
CVE2022-0735 Gitlab-runner token获取后的可利用性分析
viper:一款中国人写的红队服务器——记一次内网穿透练习
SASE网络安全架构 | 零信任网络访问(ZTNA)

发布评论