
Prueba de concepto para una vulnerabilidad de inyección SQL no autenticada en XOne Web Monitor que permite el volcado de credenciales y la extracción de datos mediante peticiones POST manipuladas.
Autor: Javier Carabantes
Software afectado: XOne Web Monitor
Software: https://xone.es/
Versión afectada: 02.10.2024.530 framework 1.0.4.9
Se ha descubierto una vulnerabilidad de inyección SQL no autenticada en la funcionalidad de inicio de sesión de XOne Web Monitor versión 02.10.2024.530 framework 1.0.4.9. Este fallo permite a atacantes explotar el manejo inadecuado de la entrada de usuario durante el proceso de autenticación para extraer todos los nombres de usuario y contraseñas almacenados. Específicamente, el diseño del endpoint de inicio de sesión permite a atacantes manipular una cláusula WHERE a través de un parámetro de entrada vulnerable.
/webcore/api/itf/DoAction
Lo siguiente demuestra cómo se puede explotar la vulnerabilidad usando una solicitud POST manipulada a la versión vulnerable:

Cuando se proporciona un inicio de sesión inválido, como "test:test", se envía la siguiente solicitud
POST /webcore/api/itf/DoAction HTTP/1.1
Host: redacted:44330
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: http://redacted:44330/
Content-Type: application/json
Authorization: Bearer redacted
Content-Length: 124
Origin: http://redacted:44330
Connection: keep-alive
{"action":"select","count":false,"page":{},"coll":"Usuarios","macros":{},"where":"(LOGIN='test')","sort":"","loadall":false}
Observe cómo no se envía la contraseña y el nombre de usuario está envuelto en una propiedad where. Cambiar el operador del campo LOGIN dará la lista completa de usuarios y contraseñas en texto claro:

La respuesta revela la lista de todos los nombres de usuario y sus contraseñas correspondientes almacenadas en la base de datos. Cualquier usuario tiene la capacidad de acceder y obtener datos sensibles (clientes, puesto de empleado, etc.).

Esta vulnerabilidad de inyección SQL también soporta el uso de consultas UNION en MSSQL, permitiendo a atacantes enumerar y recuperar datos de otras tablas en la base de datos.

La misma inyección permite LFD si el atacante conoce la ruta absoluta, ejemplo de lectura de C:/windows/system32/grouppolicy/machine/registry.pol, un archivo privilegiado:

El proveedor fue notificado de esta vulnerabilidad durante la semana del 11/11/2024.
La página web mostrada en la PoC ha sido despublicada.