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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cakephp-collate-sqli — CakePHP 5.4.2 - عالي - عن بُعد - SQLi - COLLATE collation هو جزء SQL خام | Kitploit
أدوات/GitHubGitHub/abraxas/cakephp-collate-sqli
ماسحات الثغرات الأمنيةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقأمن قواعد البيانات
GitHubabraxas/cakephp-collate-sqli

cakephp-collate-sqli

CakePHP 5.4.2 - عالي - عن بُعد - SQLi - COLLATE collation هو جزء SQL خام

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - cakephp-collate-sqli

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

cakephp-collate-sqli

الفئة: SQLi الوصول: عن بُعد

CakePHP 5.4.2 (887b641) - Cake Software Foundation

StringExpression::sql يربط قيمة النص ويُسلسل الترتيب (collation). IdentifierExpression يفعل الشيء نفسه. لا يوجد ensureSimpleString. في Postgres، quoteIdentifier هو '"' . trim($collation, '"') . '"'، لذا فإن علامة اقتباس مُضمَّنة تُغلق CAST مبكرًا.

التطبيق الذي يمرّر ترتيب الطلب/اللغة (collation/locale) إلى new StringExpression($term, $collation) يضع ذلك النص داخل COLLATE. تبقى القيمة مربوطة. أما الترتيب فلا.

المعرّفلا يوجد CVE بعد
الفئةSQLi
الوصولعن بُعد (تطبيق يمرّر collation/locale إلى StringExpression / IdentifierExpression)
CWECWE-89
CVSSمرتفع: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
المنتجCakePHP (cakephp/database)
المتأثر5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
المصادقةتطبيق يمرّر collation/locale إلى تلك المُنشِئات
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

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

يحتاج إلى تطبيق يمرّر ترتيب المستخدم/اللغة إلى تلك المُنشِئات. تطبيق cakephp/app الافتراضي لا يعرّض الترتيب على نموذج عام بحد ذاته.

الصلاحيةالطريقة / نقطة الوصولالنوعمُثبَت مختبريًا أو مُستنتَج
حقن SQL بعد COLLATEStringExpression::sql يُسلسل $this->collationسلامة SQL المُجمَّعمُثبَت مختبريًا. SQL الخام يحتوي على الحمولة غير مربوطة
نفس الحقن على المعرّفاتIdentifierExpression note COLLATE <payload>سلامة SQL المُجمَّعمُثبَت مختبريًا. id_raw_sql يحتوي على الحمولة
الخروج من تغليف Postgres "..."quoteIdentifier = '"' . trim($collation, '"') . '"'سلامة SQL المُجمَّعمُثبَت مختبريًا. SQL المُجمَّع هو COLLATE "C" AS text)) || (SELECT ...
تنفيذ الخروج وقراءة جدول آخرCAST(... ) || (SELECT note FROM lab_secret ...)استطلاع قاعدة البياناتمُثبَت مختبريًا. النتيجة xCAKEPHP-COLLATE-SQLI-WITNESS، دون خطأ تنفيذ
تعديل الصفوف / مزيد من SQL بدور الاتصالنفس الحقنسلامة قاعدة البياناتمُستنتَج. المختبر أوراكل SELECT
الضبط السلبيالترتيب Cمُغلقمُثبَت مختبريًا. النتيجة x، لا شاهد، مُجمَّع COLLATE "C"

مُغلق في هذه البقايا: قيمة النص المربوطة (:c0 يبقى الحرف x)؛ الترتيب الذي سيمرّ عبر ensureSimpleString (^[a-zA-Z0-9]+$) ليس هذه الحمولة. ليس RCE غير مُصادَق عليه على تطبيق هيكلي. ليس صدفة (shell).

بقايا نفس الإصدار: window SQLi، attachment CRLF، cache unserialize.

كيف وجدته

ثبّتُّ 5.4.2 بعد ملاحظات FunctionsBuilder / filename=. عشر عمليات بحث. تمريرة SQLi المتبقية هي هذه. StringExpression::sql:

$placeholder = $binder->placeholder('c');
$binder->bind($placeholder, $this->string, 'string');
return $placeholder . ' COLLATE ' . $this->collation;

في Postgres، quoteIdentifier يغلّف بعلامات اقتباس ASCII و trim($collation, '"'). علامة " مُضمَّنة تُغلق المعرّف. -- يلتهم المُغلِق المتبقي الذي لا يزال Cake يُلحقه.

المنعطفات الخاطئة المُسجَّلة سابقًا: SQLite كمشغّل وحيد (الدمج حقيقي، لكن كسر التغليف خاص بـ Postgres)؛ معاملة القيمة المربوطة كأنها الحقن؛ الادعاء بأن ensureSimpleString قد عمل هنا بالفعل (لم يفعل)؛ صدفة عكسية (reverse shell). مسرح.

المختبر

python3 cakephp-collate-sqli-Abraxas-Labs.py

أو

cd lab
./run.sh

استهدف فقط http://127.0.0.1:19450. cakephp/database 5.4.2 مع Postgres 16. تطبيق صغير يمرّر ?collation= إلى StringExpression / IdentifierExpression وينفّذ CAST(... AS text). جدول سري يحتوي على الشاهد.

SUCCESS cakephp-collate-sqli pin=5.4.2 raw=concat pg-wrap=breakout exec=yes CAKEPHP-COLLATE-SQLI-WITNESS

الإصلاح

ensureSimpleString() (أو قائمة ترتيب مسموح بها) على وسيط الترتيب. يجب على Postgres اقتباس المعرّفات بشكل صحيح، لا trim مع التغليف.

المراجع

  • github.com/cakephp/cakephp وسم 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • StringExpression.php · IdentifierExpression.php · Postgres.php
  • قريب مُرقَّع: CVE-2026-79752 ensureSimpleString()
  • نفس الإصدار: cakephp-window-sqli · cakephp-attachment-crlf · cakephp-cache-unserialize
  • CWE-89

الترخيص

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

تنزيل الأداة