
FAFAF
OpenSSH jusqu'à la version 7.7 est sujet à une vulnérabilité d'énumération d'utilisateurs en raison du fait qu'il ne retarde pas la sortie pour un utilisateur authentifiant invalide avant que le paquet contenant la requête ne soit entièrement analysé, lié à auth2-gss.c, auth2-hostbased.c et auth2-pubkey.c.
CVE: CVE-2018-15473
Compte-rendu de https://www.openwall.com/lists/oss-security/2018/08/15/5
sans corriger la version actuelle, un attaquant distant peut facilement tester si un certain utilisateur existe ou non (énumération de noms d'utilisateur) sur un serveur OpenSSH cible :
87 static int
88 userauth_pubkey(struct ssh *ssh)
89 {
101 if (!authctxt->valid) {
102 debug2("%s: disabled because of invalid user", __func__);
103 return 0;
104 }
105 if ((r = sshpkt_get_u8(ssh, &have_sig)) != 0 ||
106 (r = sshpkt_get_cstring(ssh, &pkalg, NULL)) != 0 ||
107 (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0)
108 fatal("%s: parse request failed: %s", __func__, ssh_err(r));
L'attaquant peut essayer d'authentifier un utilisateur avec un paquet malformé (par exemple, un paquet tronqué), et :
si l'utilisateur est invalide (il n'existe pas), alors userauth_pubkey() retourne immédiatement, et le serveur envoie un SSH2_MSG_USERAUTH_FAILURE à l'attaquant ;
si l'utilisateur est valide (il existe), alors sshpkt_get_u8() échoue, et le serveur appelle fatal() et ferme sa connexion avec l'attaquant.
usage: ssh-check-username.py [-h] [-t HOSTNAME] [-p PORT] [-u USERNAME] [-w WORDLIST]
options:
-h, --help afficher ce message d'aide et quitter
-t HOSTNAME Cible unique
-p PORT port de connexion : Le port par défaut est 22
-u USERNAME nom d'utilisateur que vous voulez énumérer
-w WORDLIST énumérer plusieurs utilisateurs
Veuillez utiliser ce script de manière responsable et uniquement sur des systèmes pour lesquels vous avez l'autorisation d'accéder. L'accès non autorisé à un système peut entraîner de graves conséquences juridiques.