
phpMyAdmin 5.2.3 - عالي - عن بُعد - SQLi - استعلام central columns pmadb المتبقي
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · phpmyadmin-pmadb-central-sqli
الفئة: SQLi الوصول: عن بُعد
phpMyAdmin 5.2.3 (الوسم RELEASE_5_2_3، الالتزام 962857e). تكتب الأعمدة المركزية col_extra عبر دمج POST extra وattribute في نص SQL محاط بعلامة اقتباس مفردة على رابط مستخدم التحكم. تمر الحقول المجاورة عبر escapeString. هذان الحقلان لا يمران.
يقوم مستخدم مسجَّل الدخول بإرسال POST إلى index.php?route=/database/central-columns مع multi_edit_central_column_save=1 وعلامة اقتباس في field_attribute (أو col_extra). ثم يُنفِّذ getInsertQuery / updateOneColumn ذلك النص كمستخدم تحكم pma ضد pma__central_columns. ذلك الحساب هو مستخدم تخزين الإعدادات، وليس صندوق SQL المسجَّل الدخول.
كان CVE-2016-5703 هو اسم قاعدة البيانات في الأعمدة المركزية. لم يكن حقلا extra وattribute هما ذلك الخطأ.
| المعرّف | لا يوجد CVE بعد |
| الفئة | SQLi (مستخدم التحكم على pma__central_columns) |
| الوصول | عن بُعد (تسجيل دخول مصادَق عبر الكوكيز؛ الأعمدة المركزية في pmadb مُفعَّلة) |
| CWE | CWE-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) |
| المصادقة | تسجيل دخول مصادَق عبر الكوكيز. الأعمدة المركزية في pmadb مُفعَّلة. |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1:19210 فقط |
يمكن لمستخدم phpMyAdmin مسجَّل الدخول يستطيع فتح الأعمدة المركزية أن يحقن SQL كمستخدم التحكم على pma__central_columns.
| الصلاحية | الطريقة / المسار | مُثبَت مختبريًا أو مُستنتَج |
|---|---|---|
| كسر نص INSERT/UPDATE لمستخدم التحكم (سلامة SQL في pmadb) | POST index.php?route=/database/central-columns multi_edit_central_column_save=1 مع علامة اقتباس في field_attribute / col_extra | مُثبَت مختبريًا. خطأ JSON #1064. الشاهد PMA-PMADB-CENTRAL-SQLI-WITNESS في خطأ مستخدم التحكم |
| إبقاء الحقول المجاورة ضمن النطاق | نفس POST، علامة اقتباس في field_name | مُثبَت مختبريًا. يُخزَّن الصف كـ neg'col. escapeString صمد |
| قراءة أو الكتابة فوق صفوف الأعمدة المركزية لمستخدمين آخرين | نفس نقطة الوصول، بمجرد إغلاق النص | مُستنتَج. يتوقف المختبر عند خطأ الصياغة؛ لا استعلام مُكدَّس |
| استعلامات إضافية كمستخدم التحكم | نفس نقطة الوصول إذا سمح رابط mysqli الخاص بالتحكم بالاستعلامات المتعددة | مُستنتَج. الإعداد الافتراضي لـ mysqli::query هو استعلام واحد. غير مُفعَّل هنا |
الوصول إلى جداول pmadb أخرى (الإشارات المرجعية، السجل، pma__userconfig) | فقط إذا كانت الاستعلامات المُكدَّسة أو كتابة بنمط INTO ممكنة | مُستنتَج. مستخدم التحكم في هذا المختبر لديه فقط DML على phpmyadmin.* |
مُغلَق في هذا المختبر: الوصول غير المصادَق، صندوق SQL الخاص بـ appuser المسجَّل الدخول (appdb فقط)، صدفة نظام التشغيل، والاستعلامات المُكدَّسة. الميزة لا تعمل إذا كانت pmadb / الأعمدة المركزية مُعطَّلة (هذا فشل، وليس هذه الثغرة المتبقية).
ثمانية عمليات بحث متوازية في المصدر لـ RELEASE_5_2_3. الحقول المجاورة في CentralColumns.php تمر عبر escapeString. أما extra وattribute فيُدمَجان عبر implode في نص محاط بعلامة اقتباس مفردة. كان CVE-2016-5703 هو اسم قاعدة البيانات، وليس هذه الأعمدة.
مسارات خاطئة: اعتبار علامة اقتباس في field_name هي الثغرة المتبقية (تُخزَّن كـ neg'col؛ هذا هو النفي)؛ توقُّع أن يُظهر السجل العام الشاهد غير المُهرَّب (يموت INSERT بـ #1064 قبل كتابة ناجحة)؛ اعتبار إيقاف pmadb هذه الثغرة المتبقية (الميزة لا تعمل).
python3 phpmyadmin-pmadb-central-sqli-Abraxas-Labs.py
أو
cd lab
./run.sh
على loopback فقط: http://127.0.0.1:19210. الصورتان phpmyadmin:5.2.3 وmysql:8.0. مشروع Compose phpmyadmin-pmadb-central-sqli. الشاهد PMA-PMADB-CENTRAL-SQLI-WITNESS.
SUCCESS phpmyadmin-pmadb-central-sqli how=live insert-syntax=yes field-name-escaped=yes general-log-unescaped=false error-has-witness=true PMA-PMADB-CENTRAL-SQLI-WITNESS
escapeString / quoteString(..., CONNECT_CONTROL) على extra وattribute. قائمة سماح بـ auto_increment، UNSIGNED، BINARY، UNSIGNED ZEROFILL، وon update CURRENT_TIMESTAMP. quoteString في phpMyAdmin 6.x على كتلة JSON الخاصة بالمصمم هي الشكل المُرقَّع لهذه الفئة من دمج pmadb.
962857e)libraries/classes/Database/CentralColumns.php getInsertQuery / updateOneColumnControllers/Database/CentralColumnsController.php POST multi_edit_central_column_saveGET|POST /database/central-columnsGNU Affero GPL v3.0. انظر LICENSE. مختبر loopback فقط. دون أي ضمان.