e1st/CVE-2025-56015
GitHub: e1st/CVE-2025-56015
针对 GenieACS CVE-2025-56015 漏洞的概念验证工具,利用 JavaScript 沙箱逃逸技术实现未授权或认证后的远程代码执行。
Stars: 0 | Forks: 0
# CVE-2025-56015 GenieACS RCE
)
## 要求
- Python 3.6+
- `requests` 库 (`pip install requests`)
## 法律与道德声明
**此代码仅供教育和授权安全测试目的提供。**
在未经授权的情况下,针对您不拥有或未明确获得测试许可的系统使用此代码是非法和不道德的。
## 参考
- [GenieACS 文档](https://genieacs.com/docs/)
- CVE-2025-56015 公告







## 概述
针对 **CVE-2025-56015** 的概念验证 Exploit,这是 **GenieACS** 中的一个严重沙箱逃逸和代码注入漏洞,允许在配置上下文中执行任意 JavaScript。通过利用 `declare.constructor.constructor` 原型链,攻击者可以逃脱受限的 JavaScript 环境,访问底层的 Node.js `child_process` 和 `net` 模块,并实现完全的 **远程代码执行 (RCE)**。
**漏洞利用类型:** 远程 (Remote)
**认证要求:** 需要访问 GenieACS NBI (端口 7557) 和 ACS (端口 7547) 的网络权限
**影响:** 服务器完全沦陷、反弹 Shell 执行、网络跳板
## 环境信息
- **测试环境:** [GenieACS Docker 镜像](https://github.com/GeiserX/genieacs-docker)
- **测试版本:** GenieACS v1.2.13
- **未测试版本:** GenieACS v1.2.14 - v1.2.16+ (或最新版本,行为可能不同或已修补)
## 漏洞详情
### 漏洞 1:未授权 Send API
端口 7557 上的 NBI 端点允许未经身份验证的访问以检索敏感数据。示例 API 端点包括:
**获取用户数据:**
```
$ curl 'http://myhost:7557/users/'
```
_响应包含敏感信息,例如密码哈希和盐值。_
**获取文件列表:**
```
$ curl 'http://myhost:7557/files/'
```
**获取配置详情:**
```
$ curl 'http://myhost:7557/provisions/'
```
此外,可以直接从文件服务器 (端口 7567) 下载文件而无需身份验证:
```
wget 'http://myhost:7567/SCR-20250623-qjoi.png'
```
### 漏洞 2:JS 沙箱逃逸 (Pre/Post Auth RCE)
沙箱内的测试调试端点限制了对 Node.js `process` 对象的直接访问。然而,可以通过对象遍历绕过此限制,特别是使用构造函数链 (例如 `constructor.constructor`)。
通过对可用对象(如 `declare`)调用此方法,攻击者可以逃脱沙箱上下文并获得对全局 `process` 对象的访问权限。这赋予了读取环境变量和执行任意命令的能力。
#### RCE 攻击向量
1. **认证后 RCE (Post-Auth RCE):**
配置脚本可以通过 API 端点 `/api/devices/{device_id}/tasks` 直接执行以获取 Shell。仅通过 NBI 发送的请求会被排队,但不会立即执行。
2. **认证前 RCE (未认证 RCE) (Pre-Auth RCE):**
使用 NBI API,攻击者可以在未经身份验证的情况下创建配置和预设。预设的作用是在设备通过 CWMP 接口发送事件时自动运行配置脚本。
**利用步骤:**
* **步骤 1:** 通过 `PUT /provisions/{provision_name}` 创建恶意配置。
* **步骤 2:** 通过 `PUT /presets/{preset_name}` 创建映射到配置的预设 (将其链接到 "Periodic" 等事件)。
* **步骤 3:** 通过向 CWMP 接口发送 Device Inform SoapXPC 消息来模拟设备,从而触发事件并激活预设。后续的 Inform 请求 (例如事件 "2 PERIODIC") 将执行 Payload。
## 此 PoC 的功能
- 通过 NBI API 自动创建恶意配置
- 自动预设配置映射
- CPE 设备模拟和自动化 CWMP 封装
- 使用 `declare.constructor.constructor` 实现可靠的 Node.js 沙箱逃逸
- 针对 Linux 主机的反弹 Shell Payload 执行
## 使用方法
在运行 Exploit 之前,请在 `exploit.py` 中直接更新 `ACS_URL`、`NBI_URL`、`LHOST` 和 `LPORT` 配置,以匹配您的环境和攻击机设置。
```
# 在你的攻击者机器上启动 listener
nc -lvnp 4444
# 运行 exploit
python3 exploit.py
```
![alt text](https://raw.githubusercontent.com/e1st/CVE-2025-56015/main/标签:0day, ACS, child_process, CISA项目, CMS安全, CVE-2025-56015, Exploit, GenieACS, GNU通用公共许可证, JavaScript, MITM代理, NBI, Node.js, PoC, RCE, TR-069, 协议分析, 原型链污染, 反向Shell, 暴力破解, 权限提升, 沙箱逃逸, 漏洞复现, 编程工具, 网络安全, 远程代码执行, 逆向工具, 隐私保护