freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

嵌套反序列化的危害:Magento XXE 漏洞分析(CVE-2024-34102)
2024-12-18 15:48:51
所属地 广东省

前言

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,发现了关于该漏洞的重要线索:

1734506932_676279b419017a1cb75f9.png!small?1734506933848

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 --admin-email=admin@admin.test --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

# 网络安全 # web安全 # 漏洞分析 # Magento # XXE漏洞
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录