
Exploit personnalisé écrit pour énumérer les noms d'utilisateurs selon CVE-2016-6210
Exploit personnalisé (python 2.7) écrit pour énumérer les noms d'utilisateurs selon CVE-2016-6210 (OpenSSH 7.2-p2 et versions antérieures)
ne doit être utilisé que sur des systèmes autorisés
J'ai écrit ce programme comme un outil pour exploiter CVE-2016-6210, qui est une vulnérabilité dans OpenSSH (avant la version 7.3) divulguée par Eddie Harari
D'après ce que j'ai compris, le problème est que la façon dont OpenSSH fonctionnait dans ces versions signifie que lorsqu'on donne un mot de passe volumineux (dans ce cas 25 Ko), les temps de traitement du hachage permettent de savoir si un nom d'utilisateur existe ou non, car le temps est plus long pour les utilisateurs valides.
Ce programme aide à exploiter cette vulnérabilité en permettant à l'utilisateur d'envoyer un certain nombre de noms d'utilisateurs (à partir d'une liste de mots), et de déterminer combien de temps a pris leur traitement. L'utilisateur peut définir une alerte pour une durée qui lui convient, et le temps et le nom d'utilisateur seront affichés si le temps de traitement dépasse cette durée.
L'utilisateur peut également ajouter une adresse IP ou un email afin de tester l'élément de la liste avec et sans l'ajout d'email à la fin. Par défaut (si aucun suffixe n'est fourni), le programme testera chaque mot de la liste de mots sous les formes mot et mot@IP. Si un suffixe est fourni, il fera de même, mais en remplaçant mot@IP par mot@suffixe.
Le nombre de fois que chaque mot est envoyé et que la réponse est chronométrée peut être personnalisé, et le programme générera automatiquement un temps de traitement moyen qui sera ensuite utilisé à la place des temps individuels, pour des raisons de fiabilité.
Un délai peut également être fourni, empêchant le programme d'envoyer trop de requêtes trop rapidement.
En ce qui concerne le code de la requête SSH lui-même, le crédit revient à Eddie Harari pour la majeure partie du code dans cveCode.py : une version modifiée du code de Harari est utilisée pour envoyer et calculer les temps. Son avis et son exemple de code peuvent être trouvés ici
Remarque : Mon code n'a été testé en boîte noire que sur OpenSSH-7.2p2 (le client est Kali Linux) et nécessite des tests supplémentaires. Les résultats et les paramètres sont contrôlés et interprétés par l'utilisateur.
python exploit_6210.py IP_ADDRESS [-h] [-a ALERT] [-w WORDLIST] [-e EMAIL] [-av ITERATE_AMOUNT] [-d DELAY]
Où :
IP_ADDRESS est l'hôte que vous testez avec le programme
-a ALERT (optionnel, valeur par défaut 0.1) est la durée (en secondes) pour laquelle vous souhaitez qu'une alerte soit déclenchée si le temps de traitement est supérieur
-w WORDLIST (optionnel, valeur par défaut usernamelist) est le chemin du fichier pour la liste des noms d'utilisateurs que vous souhaitez tester contre l'hôte
-e EMAIL (optionnel) est le suffixe IP ou email (qui devrait ressembler à : @IP_ADDRESS ou @email.com) que vous souhaitez essayer à la fin de chaque élément de la liste de mots (notez que l'élément ET l'élément + email seront essayés)
-av ITERATE_AMOUNT (optionnel, valeur par défaut 1) est le nombre de fois à interroger le serveur SSH pour chaque nom d'utilisateur donné, ce qui permet d'obtenir des moyennes plus fiables pour les temps (plus le nombre est élevé, plus cela prendra du temps, BEAUCOUP)
-d DELAY (optionnel, valeur par défaut 0.5) est le délai approximatif (en secondes) entre chaque requête (plus le nombre est élevé, plus cela prendra du temps, BEAUCOUP)