
Existe una vulnerabilidad de Cross-Site Scripting (XSS) almacenado en Issabel PBX versión 4.0.0-6. Esto permite a un atacante autenticado inyectar código JavaScript o HTML arbitrario a través de los campos de entrada Group y Description que se encuentran en System → Users → Groups.
| Campo | Detalles |
|---|
| CVE ID | CVE-2023-37191 |
| Producto | Issabel PBX (issabel-pbx) |
| Versión afectada | 4.0.0-6 |
| Tipo de vulnerabilidad | Cross-Site Scripting Almacenado (XSS) |
| Severidad | Media |
| Fecha de descubrimiento | 7 de julio de 2023 |
| Descubierto por | Sahil Ojha |
| Página del proveedor | https://www.issabel.org/ |
| Código fuente | https://github.com/IssabelFoundation/issabelPBX |
| Probado en | Windows |
Existe una vulnerabilidad de Cross-Site Scripting Almacenado (XSS) en Issabel PBX versión 4.0.0-6. La aplicación no sanitiza ni codifica adecuadamente la entrada proporcionada por el usuario antes de almacenarla en la base de datos y, posteriormente, renderizarla en el navegador. Esto permite que un atacante autenticado inyecte código JavaScript o HTML arbitrario a través de los campos de entrada Group y Description que se encuentran en System → Users → Groups.
Una vez que el payload malicioso se guarda, queda almacenado de forma persistente en el servidor. Cada vez que cualquier usuario (incluidos los administradores) visita la página afectada, el script inyectado se ejecuta automáticamente en su sesión de navegador, sin que el atacante necesite realizar ninguna acción adicional. Esto es lo que distingue un XSS Almacenado (Persistente) de un XSS Reflejado; el impacto es más amplio y más peligroso porque el payload afecta a todos los visitantes de la página.
System → Users → Groups de la interfaz web de Issabel PBXGroup (campo de nombre) y Description (campo de texto)Una explotación exitosa de esta vulnerabilidad puede permitir a un atacante:
Debido a que el payload está almacenado en el servidor, todos los usuarios que visiten la página comprometida se ven afectados, lo que amplifica el daño en comparación con un ataque XSS reflejado.
Paso 1: Inicie sesión en la interfaz web de Issabel PBX con credenciales de administrador.
Paso 2: Navegue hasta System → Users → Groups. En los campos de entrada Group y/o Description, introduzca el siguiente payload XSS:
"><script>alert(1)</script>
Los campos deberían verse de forma similar a la siguiente captura de pantalla:

Paso 3: Haga clic en Guardar. El payload queda ahora almacenado de forma persistente en la base de datos de la aplicación.
Paso 4: Vuelva a la página System → Users → Groups (o haga que cualquier otro usuario la visite). El script inyectado se ejecuta automáticamente en el navegador, como se muestra a continuación:

Para mitigar esta vulnerabilidad, el equipo de desarrollo de Issabel PBX debería aplicar las siguientes correcciones:
Validación de entrada: Validar estrictamente todas las entradas proporcionadas por el usuario en el servidor. Rechazar o sanitizar los valores que contengan caracteres especiales HTML (<, >, ", ', &) en campos que no requieran formato HTML.
Codificación de salida: Al renderizar los datos almacenados de vuelta en el navegador, aplicar una codificación de salida según el contexto (por ejemplo, codificación de entidades HTML) para neutralizar cualquier marcado inyectado. Dado que Issabel PBX está basado en PHP, utilice las funciones integradas htmlspecialchars() o htmlentities() de PHP en lugar de filtros personalizados.
Política de Seguridad del Contenido (CSP): Implementar una cabecera HTTP de Política de Seguridad del Contenido estricta para limitar las fuentes desde las que se pueden ejecutar scripts. Una CSP correctamente configurada puede evitar que los scripts inyectados se ejecuten incluso si se omite la sanitización de entradas.
Auditorías de seguridad periódicas: Realizar revisiones de código y pruebas de penetración periódicas para identificar y corregir vulnerabilidades de inyección en toda la aplicación.
Esta información se proporciona únicamente con fines educativos y de investigación. El autor no es responsable del mal uso de esta información. Obtenga siempre la autorización escrita adecuada antes de probar vulnerabilidades en cualquier sistema que no sea de su propiedad.