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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
phpmyadmin-config-set-2fa — phpMyAdmin 5.2.3 - عالي - عن بُعد - 2FA - config/set يمسح المصادقة الثنائية | Kitploit
أدوات/GitHubGitHub/abraxas/phpmyadmin-config-set-2fa
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقالمصادقةمختبرات وتدريب عملي
GitHubabraxas/phpmyadmin-config-set-2fa

phpmyadmin-config-set-2fa

phpMyAdmin 5.2.3 - عالي - عن بُعد - 2FA - config/set يمسح المصادقة الثنائية

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - phpmyadmin-config-set-2fa

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  phpmyadmin-config-set-2fa

المقال التفصيلي: https://abraxaslabs.tech/research/phpmyadmin-config-set-2fa

phpmyadmin-config-set-2fa

الفئة: صلاحية متبقية / خطوة تحقق مفقودة الوصول: عن بُعد

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

POST index.php?route=/config/set يكتب أي تفضيل مدرج في القائمة المسموح بها، بما في ذلك 2fa. لا يقوم UserPreferences::persistOption بأي تحقق. لا يزال Settings -> Two-factor يستدعي TwoFactor::check(true) قبل أن يسمح بإزالة العامل. أما /config/set فلا يفعل ذلك.

يمكن لجلسة مسجّلة الدخول، أو XSS/CSRF قادر على إرسال POST مع رمز الصفحة، إرسال key=2fa وvalue=null. تسجيل الدخول التالي بكلمة المرور لا يتضمن أي مطالبة TOTP أو WebAuthn أو Simple. إزالة دائمة، وليست تجاوزًا لطلب واحد.

المعرّفلا يوجد CVE بعد
الفئةصلاحية متبقية / خطوة تحقق مفقودة
الوصولعن بُعد (تسجيل دخول بكوكي موثّق؛ يتطلب رمز CSRF)
CWECWE-620
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 (962857e4f63d42e38f11ff4d63f5e722018add76)
المصادقةتسجيل دخول بكوكي. يتطلب رمز CSRF. يكمل XSS أو CSRF للوصول إلى إزالة 2FA دائمة
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

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

إزالة 2FA من حساب phpMyAdmin دون تقديم TOTP أو WebAuthn أو حقل تأكيد Simple. يصبح تسجيل الدخول التالي بكلمة المرور فقط. تحكّم كامل في PMA بصفته ذلك المستخدم في MySQL (SQL، المستخدمون، التصدير).

الصلاحيةالطريقة / المسارالاستطلاع / السلامة / التوافرمُثبت مختبريًا أو مُستنتج
إبقاء 2fa بقيمة null وإسقاط العامل الثاني من pmadbPOST index.php?route=/config/set موثّق مع key=2fa وvalue=null بالإضافة إلى token صالحسلامة مخزن التفضيلاتمُثبت مختبريًا. success:true، وأصبح config_data في pmadb يساوي []
تسجيل الدخول بكلمة المرور فقط بعد ذلك الكتابةجلسة كوكي جديدة، نفس مستخدم MySQLسلامة مسار تسجيل الدخولمُثبت مختبريًا. لا 2fa_confirm، ووصل إلى الواجهة العادية
الإبقاء على الجلسة الحالية بينما تختفي 2FA لتسجيلات الدخول اللاحقةنفس المعالج؛ persistOption يكتب في المخزن، وليس في علم two_factor_check الحيّسلامة الجلسات اللاحقةمُثبت مختبريًا. بقيت الجلسة A. كانت الجلسة B قد رأت 2FA. الجلسة C لم ترها
التسلسل من XSS مخزّن أو CSRF قادر على إرسال POST مع رمز الصفحةبقايا مراجعة نفسها، وليس هذا المختبرسلامة 2FA بعد POST من نفس الأصلمُستنتج
إزالة 2FA عبر SettingsPOST /preferences/two-factor مع 2fa_remove=1سلامة 2FA عبر الواجهة الموثّقةمُثبت مختبريًا أنه مغلق. بدون العامل، يعرض PMA صفحة التأكيد ولا يزال pmadb يحتوي على backend=simple

مغلق في هذه البقايا: الوصول غير الموثّق، تجاوز كلمة مرور MySQL، RCE على نظام التشغيل، قراءة صفوف pmadb الخاصة بمستخدمين آخرين. لم أحتج إلى البقايا #1 (توقيع CustomServer). لم أتجاوز كلمة مرور MySQL.

نفس التثبيت: بقايا WebAuthn CustomServer.

كيف وجدتها

ثبّتُ الإصدار 5.2.3 بعد PMASA-2025-1/2/3. مصادقة الكوكيز، pmadb pma__userconfig. يُفعّل المختبر $cfg['DBG']['simple2fa'] فقط كي تتمكن صفحة Settings من تسجيل الواجهة الخلفية Simple دون مفتاح عتادي. يعيش كل من TOTP وWebAuthn في مفتاح التفضيل نفسه 2fa.

يأخذ SetConfigController الوسيط key والقيمة value بصيغة JSON ويستدعي Config::setUserValue. وُثّق UserPreferences::persistOption بعبارة "No validation is done!" وتُدرج apply() المفتاح 2fa في قائمة السماح كي لا يُسقَط بوصفه تفضيلًا غير معروف.

$result = $this->config->setUserValue(null, $key, json_decode($value));

json_decode('null') هو null في PHP. بعد ذلك تقوم persistOption('2fa', null, $default) بإلغاء تعيين config_data['2fa'] لأن القيمة الافتراضية لهذا المسار هي أيضًا null.

الإعدادات -> المصادقة الثنائية هي النقيض. لن يقوم TwoFactorController بتنفيذ configure('') حتى تُرجع TwoFactor::check(true) القيمة true.

المنعطفات الخاطئة المسجّلة مسبقًا: اعتبار 2fa_remove في الإعدادات هي الثغرة (فهي لا تزال تطلب عامل التحقق)؛ والادعاء بوجود وصول غير مُصادَق؛ والادعاء بتجاوز كلمة مرور MySQL؛ واعتبار هذا من بقايا #1 (CustomServer)؛ وصدفة عكسية. مسرح.

المختبر

python3 phpmyadmin-config-set-2fa-Abraxas-Labs.py
# or: cd lab && ./run.sh

استهدف فقط http://127.0.0.1:19280. مشروع Compose phpmyadmin-config-set-2fa. ثبّت RELEASE_5_2_3. ينسخ run.sh أو يستنسخ ذلك الوسم إلى lab/src/ من أجل الصورة. يتم تفكيك الحزمة بعد التشغيل.

سجّلت الإعدادات Simple 2FA. أصاب متصفح ثانٍ صفحة 2fa_confirm. بقي طلب POST 2fa_remove بدون العامل على واجهة التأكيد وترك backend=simple في pmadb. ثم أعاد POST /config/set القيمة success:true، وأصبح pmadb []، ووصل تسجيل الدخول التالي إلى الواجهة العادية.

SUCCESS phpmyadmin-config-set-2fa enroll=simple ui-remove-blocked=yes config-set-cleared=yes next-login-password-only=yes PMA-CONFIG-SET-2FA-WITNESS

الإصلاح

ارفض 2fa (وغيرها من مفاتيح المصادقة) على /config/set. اشترط TwoFactor::check(true) قبل أي تعديل على المصادقة الثنائية. أبقِ مسار Settings هو الكاتب الوحيد.

المراجع

  • github.com/phpmyadmin/phpmyadmin وسم RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/Controllers/Config/SetConfigController.php
  • libraries/classes/Config/UserPreferences.php
  • نفس التثبيت: PMA-5.2.3-WebAuthn-2FA
  • CWE-620

الترخيص

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

تنزيل الأداة