
PoC für LPE mit QlikView
Betroffene Anwendung: QlikView
Plattform: Windows
Problem: Lokale Rechteausweitung über MSI-Installer (DLL-Hijacking-Race-Condition)
Entdeckt und gemeldet von: Pawel Karwowski und Julian Horoszkiewicz (Eviden Red Team)
Details:
Auf Systemen mit installiertem QuikView12 ist es für normale Benutzer möglich, den Installer im "Reparatur"-Modus zu starten, indem der folgende Befehl ausgeführt wird:
msiexec.exe /fa PFAD_ZUR_INSTALLERDATEI.msi
Dies startet den msiexec-Dienst, der den Reparaturprozess durchführt, mehrere Aktionen ausführt und unter anderem Dateien im Verzeichnis C:\Users\pk\AppData\Local\Temp erstellt, deren Dateinamen dynamisch nach folgendem Schema generiert werden: "wac<vier zufällige Buchstaben oder Zahlen>.tmp", z. B. wac98DF.tmp.
Der Prozess verwendet dann die generierte wac****.tmp-Datei (ausführbar), die als NT AUTHORITY/SYSTEM läuft, um in sie zu schreiben und ein Abbild von sich selbst zu laden.
Da das Verzeichnis C:\Users\pk\AppData\Local\ dem normalen Benutzer gehört, erbt das Verzeichnis C:\Users\pk\AppData\Local\Temp\ die Berechtigungen, sodass der normale Benutzer den Inhalt des Verzeichnisses beeinflussen kann, z. B. durch Überschreiben der dynamisch generierten DLL-Dateien.
Dies erzeugt eine Race-Condition. Gelingt es, die DLL-Datei zu lokalisieren, kann der Benutzer versuchen, sie mit seiner eigenen Datei zu überschreiben. Wenn der Austausch im richtigen (sehr engen) Zeitfenster erfolgt – direkt nachdem die Originaldatei vom Installer geschrieben und der Dateideskriptor geschlossen wurde, aber bevor der Installer LoadLibrary() darauf aufruft – kann die eigene DLL-Datei als NT AUTHORITY/SYSTEM ausgeführt werden, was eine lokale Rechteausweitung darstellt.
Die Ausnutzung erfolgt mit einem PowerShell-Skript, das die .MSI-Datei ausführt, auf das Vorhandensein und die Erstellung der legitimen EXE-Datei von Interesse prüft und wiederholt meine Proof-of-Concept-EXE in das Appdata\Local\Temp-Verzeichnis kopiert, wodurch die legitime EXE-Datei effektiv überschrieben wird. Nach dem Laden erstellt die PoC-EXE-Datei eine Datei poc.txt in C:\Users\Public, zusammen mit der Befehlszeile, die sie aufgerufen hat, und der Ausgabe von whoami.
MSI-Datei SHA256-Summe:
0267324393384ED2B0746D6CEBDD0FD7D8DBD26853BDA58F875F20F40EBBB898