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 يمسح المصادقة الثنائية

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - phpmyadmin-config-set-2fa

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  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 وقيمة JSON value ويستدعي Config::setUserValue. UserPreferences::persistOption موثَّق بأنه "لا يتم إجراء أي تحقق!" يُدرج apply() المفتاح 2fa في القائمة المسموح بها حتى لا يُسقَط المفتاح كتفضيل غير معروف.

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

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

Settings -> Two-factor هو التباين. لا يقوم TwoFactorController بتنفيذ configure('') حتى يُرجع TwoFactor::check(true) القيمة true.

منعطفات خاطئة مسجَّلة بالفعل: اعتبار 2fa_remove في Settings هي الثغرة (لا يزال يطلب العامل)؛ ادعاء الوصول غير الموثَّق؛ ادعاء تخطي كلمة مرور 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/ من أجل الصورة. تُفكَّك الحزمة بعد التشغيل.

سجّلت Settings 2FA من نوع Simple. أصاب متصفح ثانٍ صفحة 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) قبل أي تعديل على 2FA. أبقِ مسار 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 فقط. لا ضمان.

تنزيل الأداة