
يسمح OpenSSH حتى الإصدار 7.7 للمهاجمين عن بُعد بتعداد أسماء المستخدمين الصالحة عبر إرسال طلبات مصادقة مشوّهة ومراقبة الاستجابات التفاضلية من الخادم.
| الحقل | القيمة |
|---|---|
| البرنامج المتأثر | OpenSSH 2.3 حتى 7.7 |
| CVSS v3.1 | 5.3 (متوسط) |
| متجه الهجوم | الشبكة (عن بُعد، بدون مصادقة مطلوبة) |
| السبب الجذري | لا يؤخر الخادم إنهاء الجلسة للمستخدمين غير الصالحين حتى بعد تحليل الحزمة بالكامل (auth2-gss.c, auth2-hostbased.c, auth2-pubkey.c) |
| الأثر | كشف المعلومات — تعداد أسماء المستخدمين الصالحة |
exploit.py — الحزمة المشوّهة (سريع، متعدد الخيوط)يرسل طلب SSH_MSG_USERAUTH_REQUEST مقطوعًا (مع إزالة الحقل المنطقي). يؤدي المستخدمون غير الصالحون إلى إنهاء مبكر (USERAUTH_FAILURE) بينما يتسبب المستخدمون الصالحون في قطع الخادم للاتصال.
exploit_timing.py — هجوم التوقيت (أبطأ، يعمل على الخوادم المحدّثة)يرسل كلمة مرور طويلة جدًا (~100KB) عبر مصادقة كلمة المرور. يستغرق المستخدمون الصالحون وقتًا أطول لأن الخادم يحسب تجزئة (hash) لكلمة المرور قبل رفضها، بينما يُرفض المستخدمون غير الصالحون فورًا. يعمل بشكل تسلسلي ويقوم بمعايرة العتبة تلقائيًا.
استخدم هذا النص البرمجي عندما يُرجع 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 | عنوان IP لخادم SSH الهدف |
target_port | منفذ SSH الهدف (عادة 22) |
lhost | عنوان IP للمهاجم (غير مستخدم، محتفظ به لاتساق القالب) |
lport | منفذ المهاجم (غير مستخدم، محتفظ به لاتساق القالب) |
-u, --username | اسم مستخدم واحد لاختباره |
-w, --wordlist | مسار ملف قائمة الكلمات (اسم مستخدم واحد في كل سطر) |
-t, --threads | عدد الخيوط (الافتراضي: 4، خاص بـ exploit.py فقط) |