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

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

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

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

دليل الأدوات

الفئات

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

phpmyadmin-webauthn

phpMyAdmin 5.2.3 - عالي - عن بُعد - تخطي المصادقة الثنائية - يمكن تخطي عملية WebAuthn

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - phpmyadmin-webauthn

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

المقال التقني: https://abraxaslabs.tech/research/phpmyadmin-webauthn

phpmyadmin-webauthn

الفئة: تجاوز المصادقة الثنائية (2FA) النطاق: عن بُعد

phpMyAdmin 5.2.3 (الوسم RELEASE_5_2_3). حزمة tarball الافتراضية. web-auth/webauthn-lib هي suggest / require-dev. لا يقوم composer install --no-dev بتثبيتها. لذلك يستخدم createServer الصنف CustomServer. يقرأ هذا الصنف response.signature (يجب أن يكون الحقل موجودًا وقابلًا لفك الترميز) ولا يتحقق منه عبر COSE أبدًا. ولا يستخدم أبدًا credentialPublicKey المخزَّن. يقبل اختبار CustomServerTest الخاص بالمنتج نفسه تأكيدًا بدون مفتاح عام.

الفحوصات البنيوية حقيقية: معرّف الاعتماد في allowCredentials، وclientData.type == webauthn.get، وتطابق التحدي مع الجلسة، ومضيف الأصل، وrpIdHash، وحضور المستخدم. يتم تحليل التوقيع وتجاهله. بعد كلمة مرور MySQL، يكون توقيع WebAuthn عشوائيًا لا يزال يطابق تلك الحقول جلسة phpMyAdmin كاملة. تلك هي قاعدة البيانات. إذا كنت قد ثبّتت web-auth/webauthn-lib فعليًا، فأنت على WebauthnLibServer ولست مصابًا بهذه الثغرة.

المعرّفلا يوجد CVE بعد
الفئةتجاوز المصادقة الثنائية / غياب التحقق من التوقيع
النطاقعن بُعد (تسجيل دخول بالكوكي، ثم تخطي WebAuthn)
CWECWE-347، CWE-287
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. حزمة tarball الافتراضية / composer install --no-dev
المصادقةتسجيل دخول بالكوكي (كلمة مرور MySQL)، ثم تخطي WebAuthn
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:18080 فقط

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

لا يزال بحاجة إلى كلمة مرور MySQL (تسجيل الدخول بالكوكي). بعد تلك الكلمة، يرسل webauthn_request_response عبر POST مع تحدي مطابق، ومضيف أصل، وrpIdHash، وحضور المستخدم، ومعرّف اعتماد مسجَّل، وتوقيع عشوائي. فيصل إلى الواجهة العادية. المصادقة الثنائية اختفت. تلك هي قاعدة البيانات (SQL، المستخدمون، التصدير)، وليست صدفة PHP على المضيف.

إذا كنت قد ثبّتت web-auth/webauthn-lib فعليًا، فأنت على WebauthnLibServer ولست مصابًا بهذه الثغرة.

الصلاحيةالطريقة / المسارمُثبَت في المختبر أم مُستنتَج
إكمال المصادقة الثنائية عبر WebAuthn دون المصادِق (سلامة العامل الثاني)POST webauthn_request_response بعد كلمة المرور، توقيع عشوائيمُثبَت في المختبر. still_2fa=False landed=True
PMA كامل بصلاحيات مستخدم MySQL ذلك (سلامة + استطلاع لصندوق SQL)الجلسة نفسهامُثبَت في المختبر. علامات واجهة الصفحة الرئيسية موجودة
تخطي كلمة مرور MySQLPOST غير مُصادَقمُثبَت في المختبر أنه مغلق. يبقى على صفحة تسجيل الدخول
التجاوز نفسه مع تثبيت web-auth/webauthn-libWebauthnLibServerمغلق. ليس هذه الثغرة المتبقية
تنفيذ أوامر على نظام التشغيل / صدفة عكسيةهذه الثغرة المتبقيةمغلق

مغلق في هذه الثغرة المتبقية: PMA غير المُصادَق، وصدفة PHP على المضيف، ومعاملة حزمة tarball ثبّتت فعليًا web-auth/webauthn-lib على أنها هذه الثغرة.

كيف وجدتها

قرأت createServer، ثم parseAndValidateAssertionResponse، ثم اختبار الوحدة الذي لا يمرر مفتاحًا عامًا. الفحوصات البنيوية حقيقية. يتم تحليل التوقيع وتجاهله.

محاولات خاطئة: إرسال JSON الخاص بـ WebAuthn عبر POST دون جلسة كلمة مرور سابقة؛ توقيع فشل في الفحوصات البنيوية؛ Webauthn\Server لا يزال موجودًا (صنف خادم خاطئ)؛ تحدي ليس من هذه الجلسة؛ عدم تطابق مضيف الأصل؛ علم حضور المستخدم غير مُفعَّل؛ معرّف اعتماد غير موجود في allowCredentials.

يقوم Dockerfile المخبري بنسخ 5.2.3، ثم composer install --no-dev، ثم يحذف vendor/web-auth بحيث يكون CustomServer هو المستخدم. يخرج آخر أمر php -r بالرمز 1 إذا كان Webauthn\Server موجودًا. يسجّل init.sql المصادقة الثنائية WebAuthn للمستخدم appuser دون مفتاح عتاد. يرسل PoC التوقيع not-a-real-signature-PMA-WEBAUTHN-BYPASS عبر POST.

المختبر

استنسخ الإصدار المثبّت بجوار Dockerfile، ثم شغّل:

cd lab
git clone --depth 1 --branch RELEASE_5_2_3 https://github.com/phpmyadmin/phpmyadmin.git src
./run.sh

أو من جذر الحزمة بعد ذلك الاستنساخ:

python3 phpmyadmin-webauthn-Abraxas-Labs.py

للاسترجاع المحلي فقط: http://127.0.0.1:18080. مشروع Compose pma-webauthn-lab. ثبّت RELEASE_5_2_3. لا تُشحن src/. الشاهد PMA-WEBAUTHN-BYPASS.

SUCCESS PMA-WEBAUTHN-BYPASS WebAuthn 2FA accepted with garbage signature

الإصلاح

تحقّق من authenticatorData || SHA-256(clientDataJSON) باستخدام مفتاح COSE العام المخزَّن؛ واربط userHandle؛ وطبّق signCount. اجعل web-auth/webauthn-lib تبعية حقيقية واحذف CustomServer، أو افشل بشكل مغلق إذا كانت المكتبة مفقودة. حتى ذلك الحين، عطّل المصادقة الثنائية WebAuthn 2FA أو لا تعرّض phpMyAdmin هذا.

المراجع

  • github.com/phpmyadmin/phpmyadmin وسم RELEASE_5_2_3
  • Plugins\TwoFactor\WebAuthn::createServer
  • CustomServer::parseAndValidateAssertionResponse
  • بقايا التثبيت نفسها: phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-347 · CWE-287

الترخيص

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

تنزيل الأداة