Descripción del problema
La validación de entradas que faltan y la codificación de salida permite la inyección de JavaScript, lo que hace que se reflejen los scripts de sitios (XSS).
Los scripts de sitios reflejados se pueden usar para inyectar JavaScript arbitrario en la página autenticada de Microsoft System Center 2016. Es posible interceptar la siguiente solicitud GET y modificar el SpaceID para inyectar cadenas arbitrarias en el panel de navegación izquierdo de la consola web.
GET/OperationsManager/InternalPages/NavigationTree.aspx?SpaceId=1002&ViewId=Favorites_Overview HTTP/1.1
A continuación se muestra un ejemplo de una cadena arbitraria:
abc%3E%3C","00000000-0000-0000-0000-000000000000");alert(1);//%3E
Una vez inyectado, un JavaScript malintencionado puede (entre otros) modificar el comportamiento actual de la página, introducir troyanos o registradores de pulsaciones de teclas, forzar redirecciones malintencionadas, suplantar contenido y provocar fugas de contenido, de VIEWSTATE y de tokens de validadores (sobrepasando los controles anti-CSRF).
El ataque consta de los siguientes pasos
-
Un atacante crea una solicitud GET autenticada específica de System Center con carga XSS y engaña a la víctima para acceder a la URL especial o engaña al usuario para acceder a una estafa de suplantación de identidad que desencadena la solicitud específica.
-
La víctima autenticada carga o recarga la página de inicio.
Nota: El ataque es aplicable a cualquier valor viewID y a cada solicitud con el parámetro de cadena de consulta SpaceID.
Caso de prueba
Resultado esperado: Error de SpaceID no válido o panel vacío y ninguna ejecución de JavaScript aleatorio
Resultado: JavaScript arbitrario ejecutado.
Resolución
Implementar la validación de entrada estricta. Solo se aceptan enteros como SpaceID, por lo que la comprobación del tipo de datos con respecto a la entrada es suficiente para corregir la vulnerabilidad.
Hemos agregado una comprobación para verificar que SpaceID tenga solamente valores admitidos (1001 y 1002) o, de lo contrario, el árbol no contendrá datos.
Referencias
Consulte el aviso de guía de seguridad en CVE-2020-1331.
Clasificación de seguridad
Scripts de sitios reflejados, suplantación de contenido