
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
कृपया इस स्क्रिप्ट का जिम्मेदारी से उपयोग करें और केवल उन सिस्टम पर जहां आपके पास पहुंच की अनुमति है। किसी सिस्टम तक अनधिकृत पहुंच गंभीर कानूनी परिणाम दे सकती है।