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安全, 无后门, 编程工具, 蓝队分析, 远程代码执行