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

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - cakephp-cookie-suffix

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  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 مع الجرة الافتراضية عبر أكثر من مضيف واحد أن يسرّب ملف تعريف ارتباط جلسة شريك إلى مضيف شقيق مرتبك باللاحقة، أو أن يزرع ملف تعريف ارتباط على مضيف داخلي بعد جلب عنوان URL للمهاجم. لا تتطابق 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، عنوان URL يوفره المستخدم، واجهة 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 إلى استيلاء كامل على الحساب دون تطبيق يستخدم الجرة عبر المضيفين. مسرحية: reverse shell.

المختبر

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

أو

cd lab
./run.sh

استنساخ Git للوسم 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63) في PHP 8.3. أوراكل HTTP على loopback عند 127.0.0.1:19420. لا يلزم أصل HTTP إضافي؛ يشغّل الأوراكل CookieCollection من التثبيت.

  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 domain-match
  • CWE-565 · CWE-201

الترخيص

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

تنزيل الأداة