
Proof-of-concept per una vulnerabilità di SQL injection non autenticata in XOne Web Monitor che consente il dump delle credenziali e l'estrazione di dati tramite richieste POST appositamente create.
Autore: Javier Carabantes
Software interessato: XOne Web Monitor
Software: https://xone.es/
Versione interessata: 02.10.2024.530 framework 1.0.4.9
È stata scoperta una vulnerabilità di SQL injection non autenticata nella funzionalità di login di XOne Web Monitor versione 02.10.2024.530 framework 1.0.4.9. Questa falla consente agli aggressori di sfruttare una gestione impropria dell'input utente durante il processo di autenticazione per estrarre tutti i nomi utente e le password memorizzati. Nello specifico, la progettazione dell'endpoint di login permette agli aggressori di manipolare una clausola WHERE attraverso un parametro di input vulnerabile.
/webcore/api/itf/DoAction
Quanto segue dimostra come la vulnerabilità può essere sfruttata utilizzando una richiesta POST manipolata alla versione vulnerabile:

Quando viene fornito un login non valido, ad esempio "test:test", viene inviata la seguente richiesta
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}
Notare come la password non viene inviata e il nome utente è racchiuso in una proprietà where. Modificare l'operatore del campo LOGIN restituirà l'elenco completo di utenti e password in chiaro:

La risposta rivela l'elenco di tutti i nomi utente e delle relative password memorizzate nel database. Qualsiasi utente ha la possibilità di accedere e ottenere dati sensibili (clienti, posizione dei dipendenti, ecc.).

Questa vulnerabilità di SQL injection supporta anche l'uso di query UNION in MSSQL, consentendo agli aggressori di enumerare e recuperare dati da altre tabelle nel database.

La stessa injection permette LFD se l'aggressore conosce il percorso assoluto, esempio di lettura di C:/windows/system32/grouppolicy/machine/registry.pol, un file privilegiato:

Il fornitore è stato informato di questa vulnerabilità durante la settimana del 11/11/2024.
La pagina web mostrata nel PoC è stata rimossa.