Magento 2.3.1 :组合拳拿远程代码执行权限
字数 1416 2025-08-27 12:33:31

Magento 2.3.1 组合漏洞利用分析:从XSS到远程代码执行

0x01 漏洞概述

本漏洞组合链影响Magento电子商务系统,通过结合HTML注入和Phar反序列化漏洞,攻击者可实现远程代码执行。漏洞影响范围包括:

  • 受影响版本

    • 2.3分支:≤2.3.1
    • 2.2分支:≤2.2.8
    • 2.1分支:≤2.1.17
  • 修补版本

    • 2.3.2
    • 2.2.9
    • 2.1.18
  • 必要条件:目标系统需启用Authorize.Net支付模块

0x02 漏洞影响

攻击者可利用此漏洞链:

  1. 通过储存型XSS获取管理员会话
  2. 利用后台功能实现Phar反序列化
  3. 最终获取服务器远程代码执行权限

潜在危害包括:

  • 接管Magento商店
  • 重定向支付页面
  • 窃取客户银行卡信息
  • 破坏公司财务运营

0x03 漏洞分析

3.1 储存型XSS漏洞

漏洞位置

订单取消备注功能中的escapeHtmlWithLinks()方法

漏洞原理

  1. escapeHtmlWithLinks()方法设计用于安全处理包含链接的HTML文本
  2. 方法将<a>标签替换为占位符%$is,然后进行HTML转义
  3. 最后使用vsprintf()将处理后的链接重新插入
  4. 由于处理顺序不当,导致可注入任意JavaScript代码

绕过分析

原始输入:

<i id=" <a href='http://onmouseover=alert(/XSS/)'>a link</a> "> a malicious link </i>

处理过程:

  1. 提取<a>标签并替换为%1s
    <i id=" %1s "> a malicious link </i>
    
  2. 进行HTML转义(认为%1s是安全的)
  3. 使用vsprintf()重新插入处理后的<a>标签:
    <i id=" <a href="http://onmouseover=alert(/XSS/)>">a link</a> "> a malicious link </i>
    

导致注入的onmouseover事件被执行。

3.2 Phar反序列化漏洞

漏洞位置

WYSIWYG编辑器中的图片处理控制器

漏洞原理

  1. 攻击者通过管理员权限访问后台
  2. 向图片处理功能提交包含phar://包装器的恶意参数
  3. 参数传递给getimagesize()函数
  4. 触发Phar反序列化,导致远程代码执行

关键代码:

$directive = $this->getRequest()->getParam('___directive');
$directive = $this->urlDecoder->decode($directive);
$image->open($imagePath); // 可传入phar://路径

0x04 漏洞利用链

完整攻击流程:

  1. 初始访问

    • 攻击者提交包含恶意JavaScript的订单取消备注
    • 利用escapeHtmlWithLinks()方法的缺陷注入XSS Payload
  2. 权限提升

    • 管理员查看订单时触发XSS
    • 窃取管理员会话cookie或直接执行恶意操作
  3. 远程代码执行

    • 使用管理员权限访问WYSIWYG编辑器
    • 通过图片上传功能触发Phar反序列化
    • 执行系统命令,获取服务器控制权

0x05 防护措施

临时缓解方案

  1. 禁用Authorize.Net支付模块
  2. 限制订单备注功能的使用权限
  3. 监控可疑的管理员会话活动

永久修复方案

  1. 升级到最新修补版本:

    • 2.3.2+
    • 2.2.9+
    • 2.1.18+
  2. 代码层修复:

    • 修改escapeHtmlWithLinks()方法的安全处理逻辑
    • 对用户输入进行更严格的过滤
    • 禁用不必要的PHP流包装器

0x06 时间线

  • 2018/9/25:首次报告XSS漏洞
  • 2018/11/28:发布初步补丁
  • 2019/1/11:报告Phar反序列化漏洞
  • 2019/3/26:发布包含部分修复的版本
  • 2019/6/25:发布完整修复版本

0x07 总结

此漏洞链展示了现代Web应用安全中的典型问题:

  1. 输入过滤不彻底导致的XSS
  2. 权限控制不严导致的前后台跨越
  3. 危险函数使用导致的RCE

管理员应立即升级到最新版本,并审查系统配置,特别是支付模块的使用情况。开发者应重视安全编码实践,避免类似漏洞的出现。

Magento 2.3.1 组合漏洞利用分析:从XSS到远程代码执行 0x01 漏洞概述 本漏洞组合链影响Magento电子商务系统,通过结合HTML注入和Phar反序列化漏洞,攻击者可实现远程代码执行。漏洞影响范围包括: 受影响版本 : 2.3分支:≤2.3.1 2.2分支:≤2.2.8 2.1分支:≤2.1.17 修补版本 : 2.3.2 2.2.9 2.1.18 必要条件 :目标系统需启用Authorize.Net支付模块 0x02 漏洞影响 攻击者可利用此漏洞链: 通过储存型XSS获取管理员会话 利用后台功能实现Phar反序列化 最终获取服务器远程代码执行权限 潜在危害包括: 接管Magento商店 重定向支付页面 窃取客户银行卡信息 破坏公司财务运营 0x03 漏洞分析 3.1 储存型XSS漏洞 漏洞位置 订单取消备注功能中的 escapeHtmlWithLinks() 方法 漏洞原理 escapeHtmlWithLinks() 方法设计用于安全处理包含链接的HTML文本 方法将 <a> 标签替换为占位符 %$is ,然后进行HTML转义 最后使用 vsprintf() 将处理后的链接重新插入 由于处理顺序不当,导致可注入任意JavaScript代码 绕过分析 原始输入: 处理过程: 提取 <a> 标签并替换为 %1s : 进行HTML转义(认为 %1s 是安全的) 使用 vsprintf() 重新插入处理后的 <a> 标签: 导致注入的 onmouseover 事件被执行。 3.2 Phar反序列化漏洞 漏洞位置 WYSIWYG编辑器中的图片处理控制器 漏洞原理 攻击者通过管理员权限访问后台 向图片处理功能提交包含 phar:// 包装器的恶意参数 参数传递给 getimagesize() 函数 触发Phar反序列化,导致远程代码执行 关键代码: 0x04 漏洞利用链 完整攻击流程: 初始访问 : 攻击者提交包含恶意JavaScript的订单取消备注 利用 escapeHtmlWithLinks() 方法的缺陷注入XSS Payload 权限提升 : 管理员查看订单时触发XSS 窃取管理员会话cookie或直接执行恶意操作 远程代码执行 : 使用管理员权限访问WYSIWYG编辑器 通过图片上传功能触发Phar反序列化 执行系统命令,获取服务器控制权 0x05 防护措施 临时缓解方案 禁用Authorize.Net支付模块 限制订单备注功能的使用权限 监控可疑的管理员会话活动 永久修复方案 升级到最新修补版本: 2.3.2+ 2.2.9+ 2.1.18+ 代码层修复: 修改 escapeHtmlWithLinks() 方法的安全处理逻辑 对用户输入进行更严格的过滤 禁用不必要的PHP流包装器 0x06 时间线 2018/9/25:首次报告XSS漏洞 2018/11/28:发布初步补丁 2019/1/11:报告Phar反序列化漏洞 2019/3/26:发布包含部分修复的版本 2019/6/25:发布完整修复版本 0x07 总结 此漏洞链展示了现代Web应用安全中的典型问题: 输入过滤不彻底导致的XSS 权限控制不严导致的前后台跨越 危险函数使用导致的RCE 管理员应立即升级到最新版本,并审查系统配置,特别是支付模块的使用情况。开发者应重视安全编码实践,避免类似漏洞的出现。