
Technical analysis and proof-of-concept for CVE-2025-69906, an arbitrary file upload vulnerability in Monstra CMS 3.0.4 leading to remote code execution via blacklist bypass techniques.
作者:David PS Abraham
日期:2026年2月5日
严重性:严重 - 远程代码执行 (CVSS 8.8+)
CWE:434 (未限制危险类型文件上传)
Monstra CMS v3.0.4 的文件管理器插件 (plugins/box/filesmanager/filesmanager.admin.php) 实施了基于黑名单的文件扩展名验证,将上传的文件直接存储在 Web 可访问的 /public/files/ 目录下,在标准 Apache/PHP 配置下可实现远程代码执行。
核心缺陷 (filesmanager.admin.php 约第150-220行):
// 弱黑名单验证
$blacklist = array('.php', '.php3', '.php4', '.php5', '.phtml', '.pl', '.py', '.jsp', '.asp', '.sh', '.cgi');
$bypass = true;
foreach ($blacklist as $bad) {
if (strpos(strtolower($filename), $bad) !== false) {
$bypass = false;
break;
}
}
if ($bypass) {
// 直接写入 Web 根目录 - 未进行清理
$upload_path = BASE_PATH . DS . 'public' . DS . 'files' . DS;
move_uploaded_file($file['tmp_name'], $upload_path . $filename);
// http://目标/public/files/shell.PHP 可执行!
}
| 缺陷 | 绕过示例 | 结果 |
|---|---|---|
| 大小写敏感 | shell.PHP, shell.pHp | ✅ 可执行 |
| 双扩展名 | shell.php.jpg | ✅ 可执行 |
| 空字节 | shell.php%00.jpg | ✅ 可执行 |
| 非标准PHP | shell.php7, shell.phtml | ✅ 可执行 |
| 影响 | 描述 |
|---|---|
| 远程代码执行 | 通过上传 webshell 实现任意 PHP 执行 |
| 权限提升 | 管理员认证 → 服务器沦陷 |
| 信息泄露 | 通过 <?php echo file_get_contents('../config.php'); ?> 读取文件 |
| 攻击向量 | 远程,需认证(文件管理器界面) |
Monstra CMS <= 3.0.4
路径:plugins/box/filesmanager/filesmanager.admin.php
仓库:https://github.com/monstra-cms/monstra/tree/dev/plugins/box/filesmanager
2026-02-05:CVE-2025-69906 由 MITRE 分配
2026-02-05:公开披露
1. 禁用文件管理器插件
2. 仅白名单允许的扩展名(如 image/png, image/jpeg)
3. 重命名上传文件:uniqid() + .jpg
4. 将文件存储在 Web 根目录之外
5. 迁移至维护中的 CMS
发现者:David PS Abraham(网络安全研究员)
遵循 CVE 分配后的负责任的披露流程。未进行实际利用。
根据仓库通知,该项目自 2018 年起已停止维护。
[1]
复制此完整内容 → 粘贴到你的仓库的 README.md → 提交并推送 → 在社交渠道上分享。