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 خام

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - cakephp-collate-sqli

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

التحليل المكتوب: https://abraxaslabs.tech/research/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 فقط

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

يتطلب تطبيقًا يمرّر ترتيب المستخدم/اللغة (collation/locale) إلى تلك المُنشِئات. تطبيق 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
الضبط السلبيcollation 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 كمحرّك وحيد (concat حقيقي، والاختراق من الالتفاف في 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. مختبر الاسترجاع المحلي فقط. دون أي ضمان.

تنزيل الأداة