
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 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
يرجى استخدام هذا السكريت بمسؤولية وفقط على الأنظمة التي لديك إذن بالوصول إليها. الوصول غير المصرح به إلى نظام يمكن أن يؤدي إلى عواقب قانونية وخيمة.