
FAFAF
OpenSSH bis einschließlich Version 7.7 ist anfällig für eine Schwachstelle zur Benutzerenumeration, da die Ausgabe für einen ungültigen authentifizierenden Benutzer nicht verzögert wird, bis das Paket, das die Anfrage enthält, vollständig analysiert wurde. Dies betrifft die Dateien auth2-gss.c, auth2-hostbased.c und auth2-pubkey.c.
CVE: CVE-2018-15473
Ausarbeitung von https://www.openwall.com/lists/oss-security/2018/08/15/5
Ohne Patchen der aktuellen Version kann ein entfernter Angreifer leicht testen, ob ein bestimmter Benutzer auf einem Ziel-OpenSSH-Server existiert oder nicht (Benutzernamen-Enumeration):
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));
Der Angreifer kann versuchen, einen Benutzer mit einem fehlerhaften Paket (z.B. einem abgeschnittenen Paket) zu authentifizieren, und:
wenn der Benutzer ungültig ist (nicht existiert), gibt userauth_pubkey() sofort zurück, und der Server sendet eine SSH2_MSG_USERAUTH_FAILURE an den Angreifer;
wenn der Benutzer gültig ist (existiert), schlägt sshpkt_get_u8() fehl, und der Server ruft fatal() auf und schließt seine Verbindung zum Angreifer.
usage: ssh-check-username.py [-h] [-t HOSTNAME] [-p PORT] [-u USERNAME] [-w WORDLIST]
options:
-h, --help show this help message and exit
-t HOSTNAME Single target
-p PORT port to connect on: Default port is 22
-u USERNAME username you want to enumerate
-w WORDLIST enumerate multiple users
Bitte verwenden Sie dieses Skript verantwortungsbewusst und nur auf Systemen, auf die Sie Zugriff haben. Unautorisierter Zugriff auf ein System kann schwerwiegende rechtliche Konsequenzen haben.