
CVE-2018-15473 के लिए रिमोट OpenSSH उपयोगकर्ता नाम गणना शोषण, जिसमें विकृत पैकेट और टाइमिंग आक्रमण स्क्रिप्ट्स शामिल हैं, बहु-थ्रेडेड स्कैनिंग के साथ।
OpenSSH 7.7 तक रिमोट हमलावरों को दुर्भावनापूर्ण प्रमाणीकरण अनुरोध भेजकर और विभेदक सर्वर प्रतिक्रियाओं का अवलोकन करके मान्य उपयोगकर्ता नामों की गणना करने की अनुमति देता है।
| क्षेत्र | मान |
|---|---|
| प्रभावित सॉफ्टवेयर | OpenSSH 2.3 through 7.7 |
| CVSS v3.1 | 5.3 (Medium) |
| हमला वेक्टर | नेटवर्क (रिमोट, कोई प्रमाणीकरण आवश्यक नहीं) |
| मूल कारण | सर्वर अमान्य उपयोगकर्ताओं के लिए पूर्ण पैकेट पार्स होने तक बेलआउट में देरी नहीं करता (auth2-gss.c, auth2-hostbased.c, auth2-pubkey.c) |
| प्रभाव | सूचना प्रकटीकरण — मान्य उपयोगकर्ता नाम गणना |
exploit.py — विकृत पैकेट (तेज़, बहु-थ्रेडेड)एक छोटा SSH_MSG_USERAUTH_REQUEST (बूलियन फ़ील्ड हटा दिया गया) भेजता है। अमान्य उपयोगकर्ता एक प्रारंभिक बेलआउट (USERAUTH_FAILURE) ट्रिगर करते हैं, मान्य उपयोगकर्ता सर्वर को डिस्कनेक्ट करने का कारण बनते हैं।
exploit_timing.py — समय हमला (धीमा, पैच किए गए सर्वर पर काम करता है)पासवर्ड प्रमाणीकरण के माध्यम से एक बहुत लंबा पासवर्ड (~100KB) भेजता है। मान्य उपयोगकर्ताओं को अधिक समय लगता है क्योंकि सर्वर अस्वीकार करने से पहले पासवर्ड हैश करता है, जबकि अमान्य उपयोगकर्ता तुरंत अस्वीकार कर दिए जाते हैं। क्रमिक रूप से चलता है और स्वचालित रूप से थ्रेशोल्ड को कैलिब्रेट करता है।
इसका उपयोग करें जब exploit.py गलत सकारात्मक परिणाम देता है (पैच किए गए सर्वर)।
git clone <this-repo-url>
cd cve-2018-15473
pip install -r requirements.txt
# Malformed packet (try this first)
python3 exploit.py <target_ip> 22 <lhost> <lport> -u root
python3 exploit.py <target_ip> 22 <lhost> <lport> -w usernames.txt -t 8
# Timing attack (fallback for patched servers)
python3 exploit_timing.py <target_ip> 22 <lhost> <lport> -u root
python3 exploit_timing.py <target_ip> 22 <lhost> <lport> -w usernames.txt
| तर्क | विवरण |
|---|
target_ip | लक्ष्य SSH सर्वर IP |
target_port | लक्ष्य SSH पोर्ट (आमतौर पर 22) |
lhost | हमलावर IP (अप्रयुक्त, टेम्पलेट स्थिरता के लिए रखा गया) |
lport | हमलावर पोर्ट (अप्रयुक्त, टेम्पलेट स्थिरता के लिए रखा गया) |
-u, --username | परीक्षण करने के लिए एकल उपयोगकर्ता नाम |
-w, --wordlist | शब्दसूची फ़ाइल का पथ (प्रति पंक्ति एक उपयोगकर्ता नाम) |
-t, --threads | थ्रेड्स की संख्या (डिफ़ॉल्ट: 4, केवल exploit.py के लिए) |