
Prueba de concepto del exploit para CVE-2026-37748, una vulnerabilidad de carga de archivos sin restricciones en Visitor Management System 1.0 que conduce a la ejecución remota de código mediante la carga de una webshell en PHP.
| Campo | Información |
|---|
| ID CVE | CVE-2026-37748 |
| Tipo | Carga de Archivos Sin Restricciones → Ejecución Remota de Código |
| Gravedad | Alta (CVSSv3: 7.2) |
| Proveedor | sanjay1313 |
| Producto | Sistema de Gestión de Visitantes |
| Versión | 1.0 |
| Descubridor | Varad AP Mene |
| Fecha | 2026-04-16 |
| CWE | CWE-434 |
Existe una vulnerabilidad crítica de Carga de Archivos Sin Restricciones en el Sistema de Gestión de Visitantes 1.0 de sanjay1313. La función move_uploaded_file() en vms/php/admin_user_insert.php y vms/php/update_1.php se invoca sin ninguna validación de tipo MIME, extensión de archivo o contenido. Un administrador autenticado puede cargar un webshell PHP a través del campo de carga de imágenes y lograr la Ejecución Remota de Código en el servidor accediendo directamente al archivo cargado mediante una URL.
ID CVE: CVE-2026-37748 CWE: CWE-434 — Carga Sin Restricciones de Archivos con Tipo Peligroso CVSSv3: 7.2 Alta (AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H)
El Sistema de Gestión de Visitantes 1.0 es una aplicación web PHP/MySQL de sanjay1313 en GitHub utilizada para gestionar registros de visitantes en organizaciones.
URL del Proveedor: 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);
No hay validación de extensión de archivo, tipo MIME ni contenido.
Paso 1 — Crear el archivo webshell shell.php:
Paso 2 — Iniciar sesión en el panel de administración: http://target/vms/ Usuario: admin Contraseña: admin
Paso 3 — Cargar shell.php como imagen de perfil: Navegar a Usuarios Administradores → Agregar Nuevo Administrador Cargar shell.php como foto de perfil
Paso 4 — Ejecutar comandos: http://target/vms/images/shell.php?cmd=id http://target/vms/images/shell.php?cmd=whoami
// 1. Validar la extensión del archivo
$allowed = ['jpg', 'jpeg', 'png', 'gif'];
$ext = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
if (!in_array($ext, $allowed)) {
die("Tipo de archivo no válido");
}
// 2. Validar el tipo 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("Tipo MIME no válido");
}
// 3. Renombrar el archivo en el servidor
$new_name = uniqid() . '.' . $ext;
move_uploaded_file($_FILES['image']['tmp_name'], "../images/" . $new_name);
| Fecha | Evento |
|---|---|
| 2026-03-15 | Vulnerabilidad descubierta |
| 2026-03-15 | Reportada a MITRE |
| 2026-04-02 | CVE-2026-37748 asignado |
| 2026-04-16 | Divulgación pública |
| 2026-04-16 | MITRE notificado sobre la publicación |
| 2026-04-17 | Proveedor notificado a través de GitHub Issues |
Varad Arachana Prashant Mene