
Proof-of-Concept für eine nicht authentifizierte SQL-Injection-Schwachstelle in XOne Web Monitor, die das Auslesen von Anmeldeinformationen und die Datenextraktion über manipulierte POST-Anfragen ermöglicht.
Autor: Javier Carabantes
Betroffene Software: XOne Web Monitor
Software: https://xone.es/
Betroffene Version: 02.10.2024.530 framework 1.0.4.9
Eine nicht authentifizierte SQL-Injection-Schwachstelle wurde in der Anmeldefunktion von XOne Web Monitor Version 02.10.2024.530 framework 1.0.4.9 entdeckt. Dieser Fehler ermöglicht es Angreifern, die unsachgemäße Verarbeitung von Benutzereingaben während des Authentifizierungsprozesses auszunutzen, um alle gespeicherten Benutzernamen und Passwörter zu extrahieren. Insbesondere erlaubt das Design des Anmeldeendpunkts Angreifern, eine WHERE-Klausel über einen verwundbaren Eingabeparameter zu manipulieren.
/webcore/api/itf/DoAction
Das Folgende zeigt, wie die Schwachstelle mit einer manipulierten POST-Anfrage an die anfällige Version ausgenutzt werden kann:

Wenn eine ungültige Anmeldung wie "test:test" eingegeben wird, wird die folgende Anfrage gesendet:
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}
Beachten Sie, dass das Passwort nicht gesendet wird und der Benutzername in eine where-Eigenschaft eingebettet ist.
Das Ändern des Operators des LOGIN-Felds liefert die vollständige Liste der Benutzer und Passwörter im Klartext:

Die Antwort zeigt die Liste aller Benutzernamen und ihrer zugehörigen Passwörter, die in der Datenbank gespeichert sind. Jeder Benutzer hat die Möglichkeit, auf sensible Daten zuzugreifen und diese auszulesen (Kunden, Mitarbeiterpositionen usw.).

Diese SQL-Injection-Schwachstelle unterstützt auch die Verwendung von UNION-Abfragen in MSSQL, sodass Angreifer Daten aus anderen Tabellen der Datenbank enumerieren und abrufen können.

Die gleiche Injection ermöglicht LFD (Local File Disclosure), wenn der Angreifer den absoluten Pfad kennt. Beispiel für das Auslesen von C:/windows/system32/grouppolicy/machine/registry.pol, einer privilegierten Datei:

Der Anbieter wurde in der Woche vom 11.11.2024 über diese Schwachstelle informiert.
Die im PoC gezeigte Webseite wurde offline genommen.