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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
phpmyadmin-designer-json-sqli — phpMyAdmin 5.2.3 - عالي - عن بُعد - SQLi - معرّفات غير معقّمة في Designer JSON | Kitploit
أدوات/GitHubGitHub/abraxas/phpmyadmin-designer-json-sqli
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقأمن قواعد البياناتمختبرات وتدريب عملي
GitHubabraxas/phpmyadmin-designer-json-sqli

phpmyadmin-designer-json-sqli

phpMyAdmin 5.2.3 - عالي - عن بُعد - SQLi - معرّفات غير معقّمة في Designer JSON

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - phpmyadmin-designer-json-sqli

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  phpmyadmin-designer-json-sqli

التحليل المكتوب: https://abraxaslabs.tech/research/phpmyadmin-designer-json-sqli

phpmyadmin-designer-json-sqli

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

phpMyAdmin 5.2.3 (الوسم RELEASE_5_2_3، الالتزام 962857e). في Designer AJAX، تقوم save_setting_value بتطبيق json_encode على كتلة الإعدادات ثم تدمجها في عبارة UPDATE/INSERT محاطة بعلامات اقتباس مفردة على رابط مستخدم التحكم. اسم المستخدم مُهرَّب. أما JSON فليس كذلك. json_encode لا يهرّب علامة الاقتباس المفردة.

يقوم مستخدم مسجّل الدخول بإرسال POST إلى index.php?route=/database/designer مع operation=save_setting_value وعلامة اقتباس في value. بعد ذلك تُنفّذ queryAsControlUser تلك السلسلة بصفتها مستخدم التحكم pma ضد pma__designer_settings. ذلك الحساب هو حساب تخزين الإعدادات، وليس صندوق SQL الخاص بالمستخدم المسجّل. تُغلّف phpMyAdmin 6.x هذه الكتلة بـ quoteString على ControlUser. أما 5.2.3 فلا تزال تدمجها خامًا.

كانت ثغرات Designer الأقدم (2016-6616، 2019-11768، 2019-18622) في اسم المستخدم / اسم قاعدة البيانات. هذا المتبقي هو عمود JSON settings_data.

المعرّفلا يوجد CVE بعد
الفئةSQLi (مستخدم التحكم على pma__designer_settings)
الوصولعن بُعد (تسجيل دخول مصادَق عبر الكوكيز؛ مع تفعيل Designer وpma__designer_settings)
CWECWE-89
CVSSمرتفع: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
المنتجphpMyAdmin
المتأثر5.2.3 الوسم RELEASE_5_2_3 (962857e)
المصادقةتسجيل دخول مصادَق عبر الكوكيز. مع تفعيل Designer وpma__designer_settings.
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:19220 فقط

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

يمكن لمستخدم phpMyAdmin مسجّل الدخول يستطيع فتح Designer أن يحقن SQL بصفتها مستخدم التحكم على pma__designer_settings.

الصلاحيةالطريقة / المسارمُثبَت مختبريًا أم مُستنتَج
كسر سلسلة UPDATE/INSERT الخاصة بمستخدم التحكم (سلامة SQL في pmadb)POST index.php?route=/database/designer مع operation=save_setting_value وعلامة اقتباس في valueمُثبَت مختبريًا. السجل العام: SET settings_data = '{"snap_line":"PMA-DESIGNER-JSON-SQLI-WITNESS'#" }' خامًا. quoteString غائبة
اقتطاع settings_data الخاص بالمستخدم بحيث لا يبقى JSON (سلامة صفّه)نفس POST؛ # يعلّق بقية العبارةمُثبَت مختبريًا. كتلة appuser تحتوي على الشاهد وليست JSON صالحًا. الحفظ النظيف grid-ok اختفى
الكتابة فوق صفوف Designer لمستخدمين آخرين دون استعلامات مكدّسة (سلامة صف الضحية)نفس # يعلّق WHERE username = '...'مُثبَت مختبريًا. الصف المزروع victim {"keep":"safe"} أصبح كتلة الشاهد المقتطعة
عبارات إضافية بصفتها مستخدم التحكمنفس نقطة الحقن إذا كان رابط mysqli الخاص بمستخدم التحكم يسمح بالاستعلامات المتعددةمُستنتَج. الإعداد الافتراضي لـ mysqli::query هو استعلام واحد. غير مفعّل هنا
الوصول إلى جداول pmadb أخرى (الإشارات المرجعية، السجل، pma__userconfig)فقط إذا كانت الاستعلامات المكدّسة أو اختراق بأسلوب الكتابة ممكنًامُستنتَج. مستخدم التحكم في هذا المختبر لديه فقط DML على phpmyadmin.*

مغلق في هذا المختبر: الوصول غير المصادَق، وصندوق SQL الخاص بـ appuser المسجّل الدخول (appdb فقط؛ appuser ليس لديه GRANT على phpmyadmin)، وصدفة نظام التشغيل، والاستعلامات المكدّسة. الميزة لا تعمل إذا كانت pmadb / إعدادات designer معطّلة (وهذا فشل، وليس هذا المتبقي).

كيف وجدتها

ثمانية عمليات بحث متوازية في الشيفرة المصدرية لـ RELEASE_5_2_3. تدمج saveSetting ناتج json_encode داخل '...'. اسم المستخدم يمر عبر escapeString. الإصدار 6.x يطبّق quoteString بالفعل على هذه الكتلة. أما 5.2.3 فلا.

المنعطفات الخاطئة: الحقن في اسم المستخدم (فهو مُهرَّب)؛ توقّع #1064 (حيث يعلّق # بقية السطر، لذا يقبل MySQL جملة UPDATE المقتطعة)؛ اعتبار الاستعلامات المكدّسة مُثبتة (الإعداد الافتراضي لـ mysqli هو استعلام واحد).

المختبر

python3 phpmyadmin-designer-json-sqli-Abraxas-Labs.py

أو

cd lab
./run.sh

للاسترجاع المحلي فقط: http://127.0.0.1:19220. الصور phpmyadmin:5.2.3 و mysql:8.0. مشروع Compose phpmyadmin-designer-json-sqli. الشاهد PMA-DESIGNER-JSON-SQLI-WITNESS.

SUCCESS phpmyadmin-designer-json-sqli version=5.2.3 how=live raw-concat=yes truncated=true sql-error=false quoteString=no PMA-DESIGNER-JSON-SQLI-WITNESS

الإصلاح

quoteString(..., ControlUser) / escapeString على كتلة JSON، كما في RecentFavoriteTable::saveToDb() وphpMyAdmin 6.x على هذا العمود. لا تضع مخرجات json_encode داخل نص SQL محاط بعلامات اقتباس مفردة.

المراجع

  • github.com/phpmyadmin/phpmyadmin وسم RELEASE_5_2_3 (962857e)
  • libraries/classes/Database/Designer/Common.php saveSetting
  • Controllers/Database/DesignerController.php POST operation=save_setting_value
  • المسار GET|POST /database/designer
  • بقايا نفس التثبيت: phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-89

الترخيص

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

تنزيل الأداة