
Технический анализ и доказательство концепции для CVE-2025-69906, уязвимости произвольной загрузки файлов в Monstra CMS 3.0.4, приводящей к удаленному выполнению кода с помощью методов обхода черного списка.
Автор: David PS Abraham
Дата: 5 февраля 2026 г.
Степень опасности: Критическая — удалённое выполнение кода (CVSS 8.8+)
CWE: 434 (Неограниченная загрузка файла опасного типа)
Плагин «Файловый менеджер» Monstra CMS v3.0.4 (plugins/box/filesmanager/filesmanager.admin.php) использует проверку расширений на основе чёрного списка, при этом загруженные файлы сохраняются непосредственно в доступный через веб каталог /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) {
// ПРЯМАЯ ЗАПИСЬ В КОРНЕВОЙ КАТАЛОГ ВЕБ-СЕРВЕРА — без санитизации
$upload_path = BASE_PATH . DS . 'public' . DS . 'files' . DS;
move_uploaded_file($file['tmp_name'], $upload_path . $filename);
// http://target/public/files/shell.PHP выполняется!
}
| Ошибка | Пример обхода | Результат |
|---|---|---|
| Чувствительность к регистру | shell.PHP, shell.pHp | ✅ Выполняется |
| Двойное расширение | shell.php.jpg | ✅ Выполняется |
| Null-байт | shell.php%00.jpg | ✅ Выполняется |
| Нестандартный PHP | shell.php7, shell.phtml | ✅ Выполняется |
| Воздействие | Описание |
|---|---|
| RCE | Произвольное выполнение 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. Хранить файлы вне корневого каталога веб-сервера
5. Перейти на поддерживаемую CMS
Обнаружил: David PS Abraham (исследователь кибербезопасности)
Ответственное раскрытие после присвоения CVE. Эксплуатация в реальных условиях не проводилась.
Проект не поддерживается с 2018 г. (согласно уведомлению в репозитории).
[1]
Скопируйте всё это содержимое → Вставьте в ваш README.md → Закоммитьте и отправьте → Поделитесь в соцсетях.