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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cakephp-cache-unserialize — CakePHP 5.4.2 - عالي - عن بُعد - Unserialize - محركات التخزين المؤقت تقوم بإلغاء تسلسل الكائنات دون قائمة فئات مسموح بها | Kitploit
أدوات/GitHubGitHub/abraxas/cakephp-cache-unserialize
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالمحاكاة الافتراضية للأمانأمن الويباختبار الاختراقمختبرات وتدريب عملي
GitHub
abraxas/cakephp-cache-unserialize

cakephp-cache-unserialize

CakePHP 5.4.2 - عالي - عن بُعد - Unserialize - محركات التخزين المؤقت تقوم بإلغاء تسلسل الكائنات دون قائمة فئات مسموح بها

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - cakephp-cache-unserialize

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  cakephp-cache-unserialize

cakephp-cache-unserialize

الفئة: حقن الكائنات الوصول: عن بُعد (كتابة Redis/Memcached) / محلي (FileEngine)

CakePHP 5.4.2 (887b641) - Cake Software Foundation

أضاف الإصدار 5.3.7 خيار Redis allowedClasses لهذا السبب وترك القيمة الافتراضية على true (السماح للجميع) للتوافق مع الإصدارات السابقة. لا يزال RedisEngine يستدعي unserialize() المجرّدة عندما تسري تلك القيمة الافتراضية. لا يمتلك FileEngine أي قائمة سماح على الإطلاق. لا يزال MemcachedEngine يضبط serialize افتراضيًا على php.

من يستطيع تعيين مفتاح cake_ على Redis، أو كتابة ملف ذاكرة تخزين مؤقت، يزرع كائنًا مُسلسلًا. عند تنفيذ Cache::read التالي (أو تحميل CacheSession) يتم تشغيله في عامل PHP.

المعرّفلا يوجد CVE بعد
الفئةحقن الكائنات
الوصولعن بُعد عندما يكون Redis أو Memcached قابلًا للكتابة من المهاجم. محلي بالنسبة لـ FileEngine على tmp/cache.
CWECWE-502
CVSSمرتفع: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (يتطلب الكتابة إلى مخزن الذاكرة المؤقتة). FileEngine هو AV:L.
المنتجCakePHP
المتأثر5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
المصادقةالكتابة إلى مخزن الذاكرة المؤقتة (Redis SET، أو Memcached set، أو ملف ذاكرة تخزين مؤقت). ليس HTTP غير مُصادق عليه إلى Redis محلي مُقيّد.
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

ما يمكن للمهاجم فعله

زرع كائن مُسلسل في ذاكرة التخزين المؤقت للتطبيق. عند القراءة التالية يتم تشغيل PHP في العامل. يتوقف هذا المختبر عند ملف إثبات. لا يُظهر سلسلة أدوات (gadget chain) أو صدفة.

مُثبت في المختبر (السلامة)

  • Redis SET cake_<key> ثم Cache::read. البادئة الافتراضية هي cake_. يستخدم RedisEngine unserialize() المجرّدة unserialize($value) عندما تكون allowedClasses على القيمة الافتراضية true. كائن LabMarker مزروع تم إنشاؤه كـ LabMarker وكتب __wakeup ملف الإثبات بمعرّف مستخدم PHP.
  • FileEngine يزرع {expiry}\n{serialize($obj)} تحت مسار الذاكرة المؤقتة. لا يزال FileEngine::get() يستدعي unserialize($data) المجرّدة. نفس العلامة، نفس الإثبات. اسم الملف هو prefix بالإضافة إلى المفتاح (cake_labfile).
  • التحكم: allowedClasses => false يرفض الكائنات. عادت نفس حمولة Redis كـ __PHP_Incomplete_Class. لم يتم تشغيل __wakeup. كان ملف الإثبات غائبًا.

مُستنتج (لم يُنفَّذ هنا)

  • تنفيذ كود عن بُعد (RCE) بمعرّف مستخدم التطبيق إذا احتوى التحميل التلقائي على أداة (gadget). علامة المختبر تكتب ملف علم فقط.
  • CacheSession::read هو نفس نقطة الوصول عندما تكون الجلسة defaults => cache. يصبح كل تحميل جلسة عملية unserialize لبايتات ذاكرة تخزين مؤقت يتحكم بها المهاجم.
  • MemcachedEngine serialize => php هو نفس فئة الخلل. لم يشغّل هذا المختبر Memcached.

مغلق / ليس هذه البقايا

  • HTTP غير مُصادق عليه إلى cakephp/app القياسي الذي لا يكشف Redis.
  • Redis محلي مُقيّد بدون كتابة من المهاجم.
  • صدفة عكسية، أو برمجية خبيثة مخصصة، أو سلسلة أدوات عامة. ليست في هذه الحزمة.
  • Redis allowedClasses => false (أو قائمة ضيقة) يحجب الكائنات بالفعل عندما يضبطها المشغّل. إنها ليست القيمة الافتراضية.

بقايا نفس التثبيت: window SQLi، collate SQLi، attachment CRLF.

كيف وجدته

ثبّتت cakephp/cakephp 5.4.2 بعد موجة 2026 FunctionsBuilder / jsonValue / Smtp CRLF / View element. يوثّق RedisEngine الخيار ولا يزال يجعله مفتوحًا افتراضيًا:

 * - `allowedClasses` ... Defaults to `true` (allow all) for backwards compatibility.
...
        'allowedClasses' => true,

مسار القراءة:

    protected function unserialize(string $value): mixed
    {
        if (preg_match('/^[-]?\d+$/', $value)) {
            return (int)$value;
        }

        $allowedClasses = $this->getConfig('allowedClasses');
        if ($allowedClasses !== true) {
            return unserialize($value, ['allowed_classes' => $allowedClasses]);
        }

        return unserialize($value);
    }

لا يمتلك FileEngine خيارًا مكافئًا:

        if ($data !== '' && !empty($this->_config['serialize'])) {
            $data = unserialize($data);

منعطفات خاطئة مسجّلة بالفعل: التعامل مع Redis محلي مُقيّد كـ RCE عبر HTTP غير مُصادق عليه؛ تسليم سلسلة أدوات؛ الادعاء بأن FileEngine عن بُعد؛ صدفة عكسية. مسرح. الأوراكل هو علامة __wakeup تكتب ملف علم.

المختبر

python3 cakephp-cache-unserialize-Abraxas-Labs.py

أو

cd lab
./run.sh

الهدف فقط 127.0.0.1:19470. CakePHP 5.4.2 مباشر من وسم 5.4.2 داخل Docker. Redis 7 مع إيقاف protected-mode حتى يتمكن المضيف من SET. PHP 8.3 مع ext-redis. فئة العلامة LabMarker مع __wakeup تكتب /tmp/CAKEPHP-CACHE-UNSERIALIZE-WITNESS. لا صدفة.

SUCCESS cakephp-cache-unserialize redis-default-wakeup=yes redis-denied-wakeup=no file-wakeup=yes pin=5.4.2 sha=887b641de9f7aba06071f98f17edcbc573cbcf63 how=live CAKEPHP-CACHE-UNSERIALIZE-WITNESS

الإصلاح

اجعل Redis allowedClasses افتراضيًا على false، أو على قائمة ضيقة من الفئات التي يخزّنها التطبيق فعليًا. أضف نفس الخيار إلى FileEngine واحترمه في get(). اجعل Memcached serialize افتراضيًا على json. وثّق أن CacheSession يرث سياسة unserialize الخاصة بمحرك الذاكرة المؤقتة.

المراجع

  • github.com/cakephp/cakephp وسم 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • RedisEngine.php · FileEngine.php
  • نفس التثبيت: cakephp-window-sqli · cakephp-collate-sqli · cakephp-attachment-crlf
  • CWE-502

الترخيص

GNU Affero GPL v3.0. انظر LICENSE. مختبر loopback فقط. لا ضمان.

تنزيل الأداة