
PoC per LPE con QlikView
Applicazione interessata: QlikView Piattaforma: Windows Problema: Escalation dei privilegi locale tramite l'installer MSI (race condition di DLL hijacking) Scoperto e segnalato da: Pawel Karwowski e Julian Horoszkiewicz (Eviden Red Team)
Dettagli: Sui sistemi con QuikView12 installato, è possibile per gli utenti normali attivare l'installer in modalità "riparazione", eseguendo il seguente comando: msiexec.exe /fa PATH_TO_INSTALLER_FILE.msi
Questo attiva il servizio msiexec, che esegue il processo di riparazione, portando a termine diverse azioni e, tra le altre, crea file all'interno della directory C:\Users\pk\AppData\Local\Temp, i cui nomi sono generati dinamicamente, seguendo il seguente modello: "wac.tmp", ad esempio, wac98DF.tmp.
Il processo utilizza quindi il file wac****.tmp generato (eseguibile) che viene eseguito come NT AUTHORITY/SYSTEM per scrivere e caricare un'immagine di sé stesso.
Poiché la directory C:\Users\pk\AppData\Local\ è di proprietà dell'utente normale, la directory C:\Users\pk\AppData\Local\Temp\ eredita i permessi, rendendo possibile per l'utente normale interferire con il contenuto della directory, ad esempio sovrascrivendo i file DLL generati dinamicamente. Si viene quindi a creare una race condition. Se l'utente riesce a individuare il file DLL, può tentare di sovrascriverlo con un proprio file. Se riesce a effettuare la sostituzione nella finestra temporale (molto ristretta) corretta — subito dopo che il file originale è stato scritto dall'installer e il descrittore del file è stato chiuso, ma prima che l'installer chiami LoadLibrary() su di esso — può far eseguire il proprio file DLL come NT AUTHORITY/SYSTEM, creando così un'escalation dei privilegi locale.
Lo sfruttamento viene effettuato tramite uno script powershell che esegue il file .MSI, verifica la presenza e la creazione del nostro EXE legittimo di interesse, e copia ripetutamente il mio EXE Proof of Concept nella directory Appdata\Local\Temp, sovrascrivendo di fatto il file EXE legittimo. Dopo essere stato caricato, il file EXE del PoC crea un file poc.txt in C:\Users\Public, insieme alla riga di comando che lo ha richiamato e all'output di whoami.
Somma SHA256 del file MSI: 0267324393384ED2B0746D6CEBDD0FD7D8DBD26853BDA58F875F20F40EBBB898