
FAFAF
OpenSSH до версии 7.7 подвержен уязвимости перечисления пользователей из-за того, что выход для недействительного пользователя не откладывается до полного разбора пакета, содержащего запрос, что связано с auth2-gss.c, auth2-hostbased.c и auth2-pubkey.c.
CVE: CVE-2018-15473
Описание из https://www.openwall.com/lists/oss-security/2018/08/15/5
без установки патча текущей версии удаленный злоумышленник может легко проверить, существует ли определенный пользователь или нет (перечисление имен пользователей) на целевом сервере OpenSSH:
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));
Злоумышленник может попытаться аутентифицировать пользователя с помощью поврежденного пакета (например, усеченного пакета), и:
если пользователь недействителен (не существует), то userauth_pubkey() возвращает результат немедленно, и сервер отправляет атакующему SSH2_MSG_USERAUTH_FAILURE;
если пользователь действителен (существует), то sshpkt_get_u8() завершается ошибкой, и сервер вызывает fatal() и закрывает свое соединение с атакующим.
usage: ssh-check-username.py [-h] [-t HOSTNAME] [-p PORT] [-u USERNAME] [-w WORDLIST]
options:
-h, --help показать это справочное сообщение и выйти
-t HOSTNAME Одиночная цель
-p PORT порт для подключения: по умолчанию 22
-u USERNAME имя пользователя для перечисления
-w WORDLIST перечислить несколько пользователей
Пожалуйста, используйте этот скрипт ответственно и только на системах, к которым у вас есть разрешение на доступ. Несанкционированный доступ к системе может привести к серьезным юридическим последствиям.