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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cakephp-cookie-suffix — CakePHP 5.4.2 - عالي - عن بُعد - Cookie - وعاء ملفات تعريف الارتباط لعميل Http يطابق النطاقات كسابقة regex | Kitploit
أدوات/GitHubGitHub/abraxas/cakephp-cookie-suffix
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبجمع المعلوماتأمن الويبالأوراق والأبحاث
GitHubabraxas/cakephp-cookie-suffix

cakephp-cookie-suffix

CakePHP 5.4.2 - عالي - عن بُعد - Cookie - وعاء ملفات تعريف الارتباط لعميل Http يطابق النطاقات كسابقة regex

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - cakephp-cookie-suffix

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

المقال: https://abraxaslabs.tech/research/cakephp-cookie-suffix

cakephp-cookie-suffix

الفئة: تسريب / زرع ملف تعريف ارتباط الوصول: عن بُعد

CakePHP 5.4.2 (887b641) - Cake Software Foundation

تستخدم CookieCollection::findMatchingCookies التعبير preg_match('/' . preg_quote($domain) . '$/', $host). هذا مطابقة لاحقة نصية، وليس مطابقة النطاق وفق RFC 6265. يُرسَل ملف تعريف ارتباط للنطاق api.partner.com إلى evilapi.partner.com. ويُرسَل ملف تعريف ارتباط للنطاق bank.com إلى notbank.com.

كما تنسخ Cookie::createFromHeaderString() قيمة Domain= من Set-Cookie دون أي تحقق مقابل مضيف الاستجابة. فاستدعاء addFromResponse من attacker.test مع Domain=victim.internal يخزّن ذلك الملف ويعيد إرفاقه لاحقًا بـ victim.internal.

أي تطبيق يستخدم Cake\Http\Client مع المخزن الافتراضي عبر أكثر من مضيف واحد يمكنه تسريب ملف تعريف ارتباط جلسة شريك إلى مضيف شقيق ملتبس باللاحقة، أو زرع ملف تعريف ارتباط على مضيف داخلي بعد جلب رابط يتحكم به المهاجم. لا يطابق other.com. هذا ليس خللًا في ملفات تعريف ارتباط المتصفح. ولا يستدعي cakephp/app القياسي مضيفًا ثانيًا من تلقاء نفسه.

المعرّفلا يوجد CVE بعد
الفئةتسريب / زرع ملف تعريف ارتباط (مطابقة نطاق بلاحقة regex)
الوصولعن بُعد (التطبيق يستخدم مخزن Http Client عبر المضيفين)
CWECWE-565، CWE-201
CVSSمرتفع: 8.2 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
المنتجCakePHP
المتأثر5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
المصادقةالتطبيق يستخدم Cake\Http\Client مع مخزن ملفات تعريف الارتباط الافتراضي عبر المضيفين
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

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

يتطلب تطبيقًا يحتفظ بملفات تعريف ارتباط Cake\Http\Client عبر أكثر من مضيف واحد (OAuth، أو webhooks، أو رابط يوفره المستخدم، أو واجهة API ثانية).

الصلاحيةالطريقة / نقطة الوصولمُثبت مختبريًا أم مُستنتج
تسريب ملف تعريف ارتباط مخزّن إلى مضيف شقيق ملتبس باللاحقةCookieCollection::addToRequest لـ https://evilapi.partner.com/ بعد ملف تعريف ارتباط بنطاق api.partner.comمُثبت مختبريًا. ترويسة Cookie في الطلب هي sid=SECRET. RFC 6265 لن يطابق
التسريب نفسه للاحقة قابلة للتسجيلنطاق ملف تعريف الارتباط bank.com، ومضيف الطلب notbank.comمُثبت مختبريًا. ترويسة Cookie في الطلب هي sid=SECRET
ضابط سلبيمضيف الطلب other.comمُثبت مختبريًا. لا توجد ترويسة Cookie
زرع ملف تعريف ارتباط لمضيف داخليaddFromResponse لـ Set-Cookie: sid=x; Domain=victim.internal من https://attacker.test/مُثبت مختبريًا. النطاق المخزّن هو victim.internal؛ والطلب التالي إلى ذلك المضيف يرسل sid=x
تثبيت الجلسة / جلسة شريك مسروقة في استدعاء Client التاليsid مزروع أو مسرّب يُستخدم كجلسة APIمُستنتج. يتوقف المختبر عند أوراكل ترويسة Cookie
الإرسال إلى المضيف نفسه لا يزال يعملنطاق ملف تعريف الارتباط api.partner.com إلى المضيف api.partner.comمُثبت مختبريًا. متوقع، وليس خللًا

مغلق على هذه البقايا: لا يطابق other.com. مخازن ملفات تعريف ارتباط المتصفح ليست هذا الخلل. لا shell. وليس RCE غير مصادق عليه على تطبيق هيكلي.

كيف وجدته

ثبّتت cakephp/cakephp 5.4.2 بعد GHSA-2qh5 وGHSA-fxf7 وGHSA-vjqc وملاحظة filename= في 5.4.2. مطابقة ملفات تعريف ارتباط Http Client هي لاحقة regex:

$pattern = '/' . preg_quote($domain, '/') . '$/';
if (!preg_match($pattern, $host)) {
    continue;
}

addFromResponse يمرّر مضيف الطلب فقط كقيمة افتراضية. سمة Domain= من Set-Cookie تستبدله وتُخزَّن.

المنعطفات الخاطئة المسجّلة مسبقًا: التعامل مع هذا كخطأ في ملف تعريف ارتباط المتصفح؛ الادعاء بأن other.com يطابق أيضًا؛ تضخيم أوراكل ترويسة Cookie إلى ATO دون وجود تطبيق يستخدم الجرة عبر المضيفين. المسرح: صدفة عكسية.

المختبر

python3 cakephp-cookie-suffix-Abraxas-Labs.py

أو

cd lab
./run.sh

Git clone tag 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63) في PHP 8.3. Loopback oracle HTTP على 127.0.0.1:19420. لا يُشترط أصل HTTP إضافي؛ يشغّل الـ oracle فئة CookieCollection من الـ pin.

  1. أضف sid=SECRET للنطاق api.partner.com. addToRequest لـ https://evilapi.partner.com/ -> Cookie: sid=SECRET.
  2. التحكم في https://other.com/ -> لا يوجد ترويسة Cookie.
  3. المضيف نفسه https://api.partner.com/ لا يزال يرسل sid=SECRET.
  4. لاحقة إضافية bank.com -> https://notbank.com/ يرسل sid=SECRET.
  5. addFromResponse من https://attacker.test/ مع Set-Cookie: sid=x; Domain=victim.internal; Path=/. التالي https://victim.internal/ يرسل sid=x.
SUCCESS cakephp-cookie-suffix suffix-leak=yes control-other=yes plant-domain=yes how=cakephp-5.4.2 CAKEPHP-COOKIE-SUFFIX-WITNESS

الإصلاح

مطابقة النطاق وفق RFC 6265 (host === domain || str_ends_with($host, '.' . $domain)). تكون ملفات تعريف الارتباط خاصة بالمضيف عندما يُحذف Domain. رفض Domain الذي لا يطابق نطاق مضيف الطلب. رفض اللواحق العامة.

المراجع

  • github.com/cakephp/cakephp وسم 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • src/Http/Cookie/CookieCollection.php · src/Http/Cookie/Cookie.php
  • مطابقة النطاق وفق RFC 6265
  • CWE-565 · CWE-201

الترخيص

GNU Affero GPL v3.0. راجع LICENSE. مختبر loopback فقط. دون أي ضمان.

تنزيل الأداة