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

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - phpmyadmin-designer-json-sqli

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  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

Loopback فقط: 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 فقط. دون أي ضمان.

تنزيل الأداة