Jenderal92/Magneto-PolyShell

GitHub: Jenderal92/Magneto-PolyShell

针对 Magento 2 未授权 RCE 漏洞的多线程自动化利用工具,通过 GraphQL 与访客购物车接口上传 webshell 实现远程代码执行。

Stars: 0 | Forks: 0

# Magento 2 RCE 漏洞利用 - 未授权文件上传导致 RCE **⚠️ 本工具仅供教育和授权安全测试使用。未经授权将其用于您不拥有的系统是违法行为。** 此漏洞利用针对 **Magento 2** (Adobe Commerce) 中一个严重的未授权远程代码执行 (RCE) 漏洞。通过将 GraphQL 产品查询、访客购物车创建以及通过自定义产品选项进行恶意文件上传相结合,攻击者可以上传 PHP webshell 并在目标服务器上实现任意代码执行。 该漏洞允许远程攻击者将 PHP 文件写入服务器的文件系统,随后通过访问该文件来执行系统命令、读写文件,并彻底攻破 Magento 系统。 ## 功能特性 - **多线程**扫描和利用(最多 10 个并发线程) - 通过 GraphQL 自动检测产品 SKU - 创建访客购物车,并将 PHP webshell 作为自定义选项文件上传 - 通过检查唯一标识符 (`Shinday`) 来验证 shell 是否部署成功 - 将成功的 shell URL 保存到 `up.txt` - 通过基于队列的工作负载分配处理大型目标列表 ## 工作原理 1. **GraphQL 产品查询** – 从 `/graphql` 获取有效的产品 SKU。 2. **访客购物车创建** – 调用 `/rest/default/V1/guest-carts` 获取购物车 ID。 3. **恶意文件上传** – 向 `/rest/default/V1/guest-carts/{cart_id}/items` 发送 POST 请求,并将经过 base64 编码的 PHP webshell 作为自定义选项文件。 4. **Shell 部署** – 服务器将文件存储在 `/pub/media/custom_options/quote/...` 或 `/media/custom_options/quote/...` 下。 5. **验证** – 脚本尝试获取上传的 PHP 文件,并检查响应中是否包含字符串 `Shinday`。 6. **输出** – 成功的 shell URL 将被追加到 `up.txt` 中。 ## 环境要求 - Python **2.7**(脚本使用 `Queue`、`unicode` 及其他 Python 2 专属模块) - `requests`, `urllib3` 库 安装依赖项: ``` pip install requests urllib3 ``` ## 使用方法 ``` python exploit.py ``` - `` – 包含目标基础 URL(每行一个)的文件,包含或不包含 `http://`/`https://` 均可。 示例: https://example.com http://shop.test magento2.target.net ### 输出 - 控制台日志会显示进度、SKU、购物车 ID、上传状态以及成功时的最终 shell URL。 - 成功的 shell URL 将保存到当前目录下的 `up.txt` 文件中。 ### 运行示例 ``` python exploit.py targets.txt [*] Total targets: 5 [*] Start time: 2025-03-15 12:00:00 [*] Starting 5 threads... [Thread 1] Processing: https://example.com [+] SKU : 24-WG080 [+] CART : 8f7c3e9a-1b2f-4d5e-9a8b-7c6d5e4f3a2b [+] Upload Status : 200 [+] Webshell terpasang: https://example.com/pub/media/custom_options/quote/a1/b2/shell_xyz.php [✓] Saved to up.txt: https://example.com/pub/media/custom_options/quote/a1/b2/shell_xyz.php ``` ## Webshell 详情 上传的 PHP 文件是一个简单的文件管理器(命名为 `xxxxx_shin.php`),它通过响应请求提供一个基于 Web 的文件资源管理器。它包含唯一标识符 `Shinday`,脚本使用它来验证是否上传成功。 **测试完成后请勿将此 shell 留在系统中 - 请立即清理。** ## 缓解措施 - 立即应用 Adobe/Magento 安全补丁。 - 如果不需要,禁用未使用的 GraphQL endpoint。 - 将文件上传限制为仅限经过身份验证的用户。 - 使用 Web 应用防火墙 (WAF) 阻止恶意的 POST 特征。 - 定期审计 `/media/custom_options/` 以检查是否存在意外的 PHP 文件。 ## 免责声明 本软件**仅供教育和授权的渗透测试目的**提供。作者不对因使用此工具造成的任何误用或损害负责。在对任何目标运行此漏洞利用之前,您必须获得系统所有者的明确书面许可。在大多数司法管辖区,未经授权访问计算机系统属于刑事犯罪。 更多免责声明,您可以在 Jenderal92 的封面查看。您可以点击 [这里 !!!](https://github.com/Jenderal92/) 查看
标签:CISA项目, Python, Web安全, 无后门, 编程工具, 蓝队分析, 远程代码执行