
Preuve de concept pour une vulnérabilité d'injection SQL non authentifiée dans XOne Web Monitor qui permet l'exfiltration d'identifiants et l'extraction de données via des requêtes POST forgées.
Auteur : Javier Carabantes
Logiciel concerné : XOne Web Monitor
Logiciel : https://xone.es/
Version concernée : 02.10.2024.530 framework 1.0.4.9
Une vulnérabilité d'injection SQL non authentifiée a été découverte dans la fonctionnalité de connexion de XOne Web Monitor version 02.10.2024.530 framework 1.0.4.9 . Cette faille permet aux attaquants d'exploiter une gestion inappropriée des entrées utilisateur lors du processus d'authentification pour extraire tous les noms d'utilisateur et mots de passe stockés. Plus précisément, la conception du point de terminaison de connexion permet aux attaquants de manipuler une clause WHERE via un paramètre d'entrée vulnérable.
/webcore/api/itf/DoAction
Ce qui suit montre comment la vulnérabilité peut être exploitée à l'aide d'une requête POST conçue pour la version vulnérable :

Lorsqu'une connexion invalide est fournie, comme "test:test", la requête suivante est envoyée
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}
Notez que le mot de passe n'est pas envoyé et que le nom d'utilisateur est encapsulé dans une propriété where. Modifier l'opérateur du champ LOGIN donnera la liste complète des utilisateurs et des mots de passe en texte clair :

La réponse révèle la liste de tous les noms d'utilisateur et de leurs mots de passe correspondants stockés dans la base de données. Tout utilisateur a la capacité d'accéder et d'obtenir des données sensibles (clients, postes d'employés, etc.).

Cette vulnérabilité d'injection SQL prend également en charge l'utilisation de requêtes UNION dans MSSQL, permettant aux attaquants d'énumérer et de récupérer des données d'autres tables de la base de données.

La même injection permet une LFD si l'attaquant connaît le chemin absolu, exemple de lecture de C:/windows/system32/grouppolicy/machine/registry.pol, un fichier privilégié :

Le fournisseur a été informé de cette vulnérabilité au cours de la semaine du 11/11/2024.
La page Web montrée dans la PoC a été dépubliée.