
Prueba de concepto de XSS almacenado para la sección de notas de OpenKM, que demuestra una omisión de las reglas de sanitización mediante javascript:, con puntuación CVSS 3.1 y guía de remediación.
XSS almacenado en Notas
Se encontró un XSS almacenado en la sección de notas de la aplicación mientras pentesteábamos un cliente que usaba OpenKM. Básicamente, al almacenar notas, de alguna manera se permitía HTML normal y se renderizaba tal cual. Como saben, las etiquetas
Sin embargo, descubrimos que usar "javascript:" en una etiqueta <a> eludía esa regla de sanitización/reemplazo.
Para reproducir el problema, puede enviar el siguiente payload en la sección de notas.
<a href='javascript:alert(1)'>Click here for more info</a>
Para activar el payload, un usuario deberá ser engañado para que haga clic en él.
En cuanto al impacto: un usuario de bajo nivel puede enviar payloads maliciosos de javascript para registrar pulsaciones de teclas, o redirigir a usuarios a sitios web maliciosos, o enviar datos en el contexto de la víctima, que se activan cuando la víctima hace clic en el enlace.
Áreas afectadas en la aplicación: Todas las secciones de notas.
Versiones afectadas: OpenKM Community Edition 6.3.11
CVSS 3.1: CVSS:3.0/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N (Medium 5.4)
Recomendación: Mejorar la sanitización, quizás, reemplazando por completo la palabra clave 'javascript'. O simplemente agregar una regla adicional para reemplazar 'javascript:'
Referencias: Fix: https://github.com/openkm/document-management-system/pull/336 CVE: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-40317 NIST: https://nvd.nist.gov/vuln/detail/CVE-2022-40317