
LPE-Exploit für ein UAF in Windows (CVE-2021-40449).
Mein Exploit für CVE-2021-40449, eine Windows-LPE durch eine UAF in win32kfull!GreResetDCInternal.
Neben der UAF-Schwachstelle werden weitere Primitive verwendet, um diesen Exploit zu ermöglichen:
access token-Adresse des Exploits in Ring0 über die NtQuerySystemInformation()-Funktion mit dem SystemHandleInformation-Parameter.rtlSetAllBits() als Gadget, um die access_token.privileges des Exploits mit 0xFFs zu überschreiben.rtlSetAllBits()-Adresse in Ring0 durch Leaken der Basisadresse des Moduls ntoskrnl.exe über die EnumDeviceDrivers()-Funktion.BitMapHeader so, dass wir die access_token.privileges des Exploits überschreiben können.BitMapHeader über das NtSetInformationThread()-Primitiv und Leaken der Allokationsadresse im Big Pool über die NtQuerySystemInformation()-Funktion mit dem SystemBigPoolInformation-Parameter.EnumPrinters() auf, laden den Treiber eines davon, haken dann die Aufrufe an die Usermode-Callback-Funktion DrvEnablePDEV().DrvEnablePDEV()-Funktion weiter, führen die Exploit-Aktionen aus und geben dann das zurück, was vom weitergeleiteten Aufruf an die GDI zurückgegeben wird.ResetDC() im gehookedten DrvEnablePDEV().PDC-Objekts durch Sprühen eines konstruierten Objekts derselben Größe unter Verwendung des CreatePalette()-Primitivs.SeDebugPrivilege-Rechts, um NT AUTHORITY\SYSTEM zu erhalten, indem Shellcode in den winlogon.exe-Prozess injiziert wird.Weitere Informationen finden Sie in diesem Artikel von Kaspersky.
getestet auf Win10 Redstone (Build 14393).