
Windows-Exploit zur Rechteausweitung, der SeImpersonate über DiagTrack RPC missbraucht und Secondary Logon nutzt, um ein INTERACTIVE-Token zu erhalten und SYSTEM-Rechte zu erlangen.
Nur ein weiterer Weg, das SeImpersonate-Privileg auszunutzen.
Dieser PoC basiert auf diesem Blog von @crisprss.
In diesem Blog zeigte @crisprss eine interessante Methode, das SeImpersonate-Privileg mithilfe von AzureAttestService auszunutzen, das mit neueren Versionen von SQL Server geliefert wird. Den PoC dafür findet man hier: https://github.com/crisprss/magicAzureAttestService.
In diesem Blog zeigt er auch einen weiteren möglichen Weg, das SeImpersonate-Privileg mithilfe des DiagTrack-Dienstes auszunutzen, aber dem Autor gelang es nicht, ihn in einen voll funktionsfähigen Exploit umzusetzen. Das Folgende stammt aus diesem Blog (aus dem Chinesischen übersetzt, also vielleicht nicht 100 % genau):
But just when I thought it could be triggered normally, I didn't realize that this service is transparent to service users, which also means that it is not feasible to simulate pipeline privilege escalation through service users, because service users such as sqlserver There is no way to call the RPC interface, which also means that you can only escalate rights from the administrator user to SYSTEM in this way, so here is just a process sharing
Und ja, wenn man versucht, die von diesem RPC-Server bereitgestellte Methode als Dienstbenutzer aufzurufen, erhält man einen Access-Denied-Fehler.

Aber warum können normale, unprivilegierte Benutzer diese Methode aufrufen?
Meine Annahme war, dass Dienstbenutzer in Sitzung 0 arbeiten und daher kein NT AUTHORITY\INTERACTIVE SID in ihrem Token haben, während normale Benutzer, die sich per RDP oder interaktiv anmelden, dieses haben.
Wie können wir also NT AUTHORITY\INTERACTIVE SID aus Sitzung 0 erhalten? Eigentlich ganz einfach: Der Secondary-Logon-Dienst erledigt das für uns.
Wir können den LogonUser-API-Aufruf verwenden, um ein Token mit NT AUTHORITY\INTERACTIVE SID zu erhalten, und wir brauchen keine gültigen Anmeldeinformationen, da wir den Anmeldetyp NewCredentials(9) verwenden.
Wenn der Anmeldetyp NewCredentials verwendet wird, erstellt der Secondary-Logon-Dienst eine neue Anmeldesitzung und kopiert das Token des Aufrufers, fügt aber auch eine NT AUTHORITY\INTERACTIVE SID ein. Das ist eine perfekte Situation für uns, da wir keine gültigen Anmeldeinformationen benötigen (Anmeldeinformationen, die mit dem Anmeldetyp NewCredentials verwendet werden, werden erst überprüft, wenn der Benutzer versucht, auf eine Netzwerkressource zuzugreifen).

Jetzt, wo wir ein Token mit NT AUTHORITY\INTERACTIVE SID haben, wird der Exploit funktionieren? Ja, das wird er :D
Dieser PoC wurde auf Windows 10 und Windows 2019 getestet.
@crisprss - https://www.crisprx.top/archives/561