[English]Heute noch ein Thema, welches schon etwas länger hier bei mir auf der Agenda steht. In der Shell von Windows gibt es eine Privilege Escalation-Schwachstelle, die einem lokalen Angreifer die Ausweitung von Nutzerrechten ermöglicht. Ist aber recht schwierig und nur lokal auszunutzen.
Anzeige
Erinnerungsmäßig ist das nie breiter thematisiert worden. ich bin über den nachfolgenden Tweet von Jonas L, der schon einige Schwachstellen in Windows aufgedeckt hat, auf das Thema gestoßen.
Das Ganze ist in diesem Google Docs-Dokument skizziert. Wenn der Benutzer das Profilbild eines Benutzerkontos ändert, löst DCOM einen Aufruf des Shell Create Object Task Server als System aus und schreibt das neue Bild nach C:\users\public\AccountPictures. Eine Ausnutzung dieser Schwachstelle zur lokalen Privilegien-Erhöhung erwies sich aber als schwierig, schreibt der Entdecker. Nachdem er bereits drei Mal gescheitert war, fand er doch noch einen Trick, der zum Ziel führte. Der Ansatz basiert auf den Hinweisen von James Forshaw und kann hier nachgelesen werden.
Im Wesentlichen geht es darum, wie man einen Pfad im NT-Objekt-Namensraum bastelt, der so lange als möglich zum Parsen benötigt. Wird das Bild des Benutzerkontos geändert, löst dies verschieden Dateiaktionen im Pfad c:\users\public\AccountPictures) aus:
Anzeige
\AccountPictures\S-1-5-21-2781542633-746229175-3265460138-1001
Is checked if it redirects to another path.
\S-1-5-21-2781542633-746229175-3265460138-1001\{2E84DAF4-572D-4F17-A374-336A1E77E9B6}-Image96.jpg
Is created, notice that the filename contains an random GUID
\S-1-5-21-2781542633-746229175-3265460138-1001\{2E84DAF4-572D-4F17-A374-336A1E77E9B6}-Image96.tmp
Is created
\S-1-5-21-2781542633-746229175-3265460138-1001\~2E84DAF4-572D-4F17-A374-336A1E77E9B6}-Image96.tmp
Is created and the calling user is granted full permission to the file.
\S-1-5-21-2781542633-746229175-3265460138-1001\{2E84DAF4-572D-4F17-A374-336A1E77E9B6}-Image96.jpg~RFb1bdf30.TMP
Is created
Dann wiederholt sich der Vorgang für Image32 statt image96 und weiter geht es mit 192, 40, 448, 32 ,48 ,240 ,96. Wenn ein Angreifer es schafft, die Datei, auf die der aufrufende Benutzer volle Berechtigung hat, an einen anderen Ort und Dateinamen umzuleiten, kann er eine sideloading dll in system32 einschleusen und so eine eigenen Nutzlast platzieren.
In diesem Google Docs-Dokument wird von Jonas L. skizziert, wie man den Namen der Datei herausfinden und in einem Proof of Concept (PoC) ausnutzen kann. Es ist keine kritische Schwachstelle, da die Ausnutzung sehr aufwändig auszunutzen ist und die Mitarbeit des Benutzers erfordert (dieser müsste sein Benutzerkontenbild ändern). Die Episode zeigt aber, dass der Teufel oft im Detail lauert.
Anzeige
Ich hoffe, Jonas L hat diese Schwachstelle auch an Microsoft gemeldet, und dann 90 Tage gewartet, bis er sie veröffentlicht.