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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
PMA-5.2.3-WebAuthn-2FA — phpMyAdmin - High 8.1 - تجاوز المصادقة الثنائية عبر POST /index.php بعد المصادقة | Kitploit
أدوات/GitHubGitHub/abraxas/pma-5.2.3-webauthn-2fa
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقالمصادقةمختبرات وتدريب عملي
GitHubabraxas/pma-5.2.3-webauthn-2fa

PMA-5.2.3-WebAuthn-2FA

phpMyAdmin - High 8.1 - تجاوز المصادقة الثنائية عبر POST /index.php بعد المصادقة

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - PMA-5.2.3-WebAuthn-2FA

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  PMA-5.2.3-WebAuthn-2FA

PMA-5.2.3-WebAuthn-2FA

phpMyAdmin 5.2.3 - phpMyAdmin

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

بعد كلمة مرور MySQL، فإن توقيع WebAuthn عشوائي لا يزال يطابق challenge وorigin وrpIdHash وحالة user-present يعني جلسة phpMyAdmin كاملة. أي قاعدة البيانات.

المعرّفلا يوجد CVE بعد
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 حزمة tarball الافتراضية (web-auth/webauthn-lib غائبة)
المصادقةكلمة مرور MySQL، ثم يتم تخطي WebAuthn
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

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

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

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

كيف وجدته

قرأت createServer، ثم parseAndValidateAssertionResponse، ثم اختبار الوحدة الذي لا يمرر مفتاحًا عامًا. الفحوصات البنيوية حقيقية: معرّف الاعتماد في allowCredentials، وclientData.type == webauthn.get، وchallenge يطابق الجلسة، ومضيف origin، وrpIdHash، وحالة user-present. يتم تحليل التوقيع وتجاهله.

أول عميل وجّهته إلى هذا كان مهذبًا. أرسل POST بـ JSON خاص بـ WebAuthn دون جلسة كلمة مرور سابقة. صفحة تسجيل الدخول. أرسل POST إلى route=/ بتوقيع لم يستوفِ حتى الفحوصات البنيوية. تبقى على المصادقة الثنائية. لا يزال webauthn_request_response موجودًا في HTML.

مسارات خاطئة مسجَّلة بالفعل: وجود Webauthn\Server (صنف خادم خاطئ)؛ challenge ليس الذي من هذه الجلسة؛ عدم تطابق مضيف origin؛ علم user-present غير مُفعَّل؛ معرّف الاعتماد ليس في allowCredentials؛ غير مصادَق، بلا كلمة مرور MySQL؛ صدفة عكسية. مسرح. العلامة الدالة هي اختفاء حقل المصادقة الثنائية وظهور صفحة تنقل phpMyAdmin.

أخطاء العميل تبدو كأخطاء المنتج. مساعد يحجب http.client لا يرسل أي حزمة أبدًا. .recv() على HTTPResponse ليست .read(). أذكر ذلك مرة واحدة لأنه كلّف وقتًا وبدا، لدقيقة، وكأن phpMyAdmin سليم.

ثم: POST باسم المستخدم/كلمة المرور/الرمز. اسحب challenge الجلسة من صفحة المصادقة الثنائية. أرسل POST بالتأكيد المزوَّر. still_2fa=False landed=True. ينسخ Dockerfile الخاص بالمختبر 5.2.3، ثم composer install --no-dev، ثم يحذف vendor/web-auth بحيث يكون CustomServer هو المستخدم. الأمر php -r الأخير يخرج بالرمز 1 إذا كان Webauthn\Server موجودًا. يجب أن تفشل الصورة في البناء إذا كانت المكتبة لا تزال موجودة. يسجّل init.sql المصادقة الثنائية عبر WebAuthn للمستخدم appuser دون مفتاح عتاد.

المختبر

cd lab
./run.sh

استهدف فقط http://127.0.0.1:18080. ضع phpMyAdmin 5.2.3 كـ src/ بجوار Dockerfile أولاً.

password-login status=200 webauthn=True
2fa-post status=200 still_2fa=False landed=True
SUCCESS PMA-WEBAUTHN-BYPASS WebAuthn 2FA accepted with garbage signature

الإصلاح

قم بتثبيت web-auth/webauthn-lib حتى يستخدم createServer المكتبة، أو قم فعليًا بالتحقق من response.signature باستخدام COSE مقابل المفتاح العام المخزّن في CustomServer. حتى ذلك الحين، عطّل المصادقة الثنائية WebAuthn 2FA أو لا تعرّض phpMyAdmin هذا.

المراجع

  • github.com/phpmyadmin/phpmyadmin وسم RELEASE_5_2_3
  • CustomServer::parseAndValidateAssertionResponse · WebAuthn::createServer · CustomServerTest
  • WebAuthn-3 verifying assertion
  • CWE-347 · CWE-287

الترخيص

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

تنزيل الأداة