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

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

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

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

دليل الأدوات

الفئات

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

phpmyadmin-setup-validate

phpMyAdmin 5.2.3 - عالي - عن بُعد - متبقٍ - لا يزال setup/validate قابلاً للوصول

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - phpmyadmin-setup-validate

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

المقال: https://abraxaslabs.tech/research/phpmyadmin-setup-validate

phpmyadmin-setup-validate

الفئة: SSRF الوصول: عن بُعد

phpMyAdmin 5.2.3 (الوسم RELEASE_5_2_3، الالتزام 962857e). يتوقف setup/index.php عن العمل عند وجود config.inc.php. أما setup/validate.php فلا. فهو لا يزال يُحمَّل ضمن $isMinimumCommon، ويأخذ رمز CSRF من صفحة تسجيل الدخول العامة، ويستدعي Validator::testDBConnection -> mysqli_connect إلى المضيف والمنفذ والمستخدم وكلمة المرور الموجودة في حقل JSON باسم values.

يقوم عميل غير مُصادَق عليه بإرسال GET إلى / للحصول على ملف تعريف ارتباط للجلسة ورمز، ثم يرسل POST إلى setup/validate.php بالقيمة id=Server مع Servers/1/host وServers/1/port حسب اختياره. يفتح مضيف phpMyAdmin مصافحة TCP لبروتوكول MySQL إلى ذلك العنوان. هذا هو SSRF عبر بروتوكول MySQL: منفذ 3306 الداخلي، وحشو بيانات الاعتماد ضد خادم داخلي، ومسبار للمنافذ من التوقيت وأخطاء mysqli. وهو ليس SSRF لبيانات HTTP الوصفية إلا إذا كان هناك شيء على ذلك المنفذ يتحدث MySQL. كما يُدرج hide_db تعبيرًا نمطيًا للمستخدم في preg_match. لم أُشغّل مسار ReDoS هذا في هذا المختبر.

تحذف صورة phpmyadmin:5.2.3 الرسمية مجلد setup/. هذا المخلف ينطبق فقط عندما يظل ذلك المجلد في جذر الويب، وهو المخلف الشائع بعد التثبيت. يستعيد المختبر مجلد setup/ من أرشيف 5.2.3 بحيث يتطابق التثبيت مع RELEASE_5_2_3.

غطّى PMASA-2016-44 / CVE-2016-6621 بعض حالات SSRF في setup. لم يُطبَّق فحص "تعطيل setup عند وجود config" قط على validate.php / config.php.

المعرّفلا يوجد CVE بعد
الفئةSSRF (بروتوكول MySQL)
الوصولعن بُعد (غير مُصادَق عليه إذا كان setup/ لا يزال متاحًا عبر الويب)
CWECWE-918
CVSSعالٍ: 7.2 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
المنتجphpMyAdmin
المتأثر5.2.3 الوسم RELEASE_5_2_3 (962857e) مع بقاء setup/ في جذر المستندات
المصادقةغير مُصادَق عليه. رمز CSRF من صفحة تسجيل الدخول العامة. لا تسجيل دخول إلى MySQL.
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:19230 فقط

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

يمكن لأي شخص يستطيع الوصول إلى شجرة setup/ المتبقية أن يجعل مضيف phpMyAdmin يفتح اتصال TCP ببروتوكول MySQL إلى مضيف ومنفذ يختارهما هو.

الصلاحيةالطريقة / المسارمُثبت في المختبر أم مُستنتج
فتح TCP من مضيف PMA إلى مضيف:منفذ المهاجم (سلامة الاتصال الصادر؛ استطلاع ذلك المنفذ)POST /setup/validate.php غير مُصادَق عليه بالقيمة id=Server مع Servers/1/host + Servers/1/port بالإضافة إلى رمز من GET /مُثبت في المختبر. سجّل المسبار على oracle:13306 القيمة PMA-SETUP-VALIDATE-WITNESS من حاوية PMA
تأكيد أن واجهة setup معطّلة بينما يبقى validate مفعّلًاGET /setup/index.phpمُثبت في المختبر. يحتوي النص على "setup is disabled" / configuration already exists
الفشل الآمن دون رمز CSRF الخاص بصفحة تسجيل الدخولنفس طلب POST، بدون tokenمُثبت في المختبر. صفر إصابات على المسبار
مسبار للمنفذ / بيانات الاعتماد من أخطاء mysqli والتوقيتنفس testDBConnectionمُستنتج. كان نص المختبر mysqli_connect(): (HY000/2006): MySQL server has gone away بعد أن قبل المسبار ثم أغلق
التحدث بـ MySQL إلى منفذ 3306 داخلي ومحاولة المستخدم/كلمة المرور المُرسَليننفس mysqli_connectمُستنتج. لم يُوجَّه إلى خدمة db في المختبر
ReDoS عبر validateRegex الذي يُدرج تعبيرًا نمطيًا للمستخدمid=Servers/1/hide_dbمُستنتج. لم يُجرَّب

مغلق في هذا المختبر: SSRF لبيانات HTTP الوصفية (المصافحة هي MySQL، وليست GET /latest/meta-data)، وتسجيل دخول PMA بدون مصادقة، وقشرة نظام التشغيل، ومعالج الإعداد نفسه (index.php يبقى معطلاً). FAIL إذا لم يتم نشر setup/ (الافتراضي في الصورة الرسمية).

كيف وجدته

ثماني عمليات بحث متوازية في المصدر لـ RELEASE_5_2_3. يحتوي setup/index.php على الخطأ القاتل الخاص بوجود الإعدادات. أما setup/validate.php فلا يحتوي عليه. ويضبط setup/lib/common.inc.php المتغير $isMinimumCommon ولا يبحث عن CONFIG_FILE.

مسارات خاطئة: التعامل مع الصورة الرسمية على أنها هذه البقايا (فهي تحذف setup/)؛ إرسال POST دون رمز صفحة تسجيل الدخول (صفر إصابات في الـ oracle)؛ التعامل مع هذا على أنه SSRF لبيانات HTTP الوصفية (المصافحة هي MySQL).

المختبر

python3 phpmyadmin-setup-validate-Abraxas-Labs.py

أو

cd lab
./run.sh

للاسترجاع المحلي فقط: http://127.0.0.1:19230. مشروع Compose phpmyadmin-setup-validate. يستعيد Dockerfile مجلد setup/ من أرشيف 5.2.3 tarball ويشغّل أوراكل TCP على المنفذ 13306. الشاهد PMA-SETUP-VALIDATE-WITNESS.

SUCCESS phpmyadmin-setup-validate how=live tcp=yes setup-index-disabled=yes PMA-SETUP-VALIDATE-WITNESS

الإصلاح

ضع الخطأ القاتل file_exists(CONFIG_FILE) في setup/lib/common.inc.php بحيث تتوقف كل سكربتات الإعداد. قيّد مضيفي testDBConnection. لا تبنِ محددات preg_match من سلاسل المستخدم.

المراجع

  • github.com/phpmyadmin/phpmyadmin وسم RELEASE_5_2_3 (962857e)
  • setup/index.php خطأ قاتل عند وجود الإعدادات
  • setup/validate.php لا يحتوي على ذلك الفحص
  • libraries/classes/Config/Validator.php testDBConnection / mysqli_connect
  • بقايا التثبيت نفسه: phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-csrf-sql
  • CWE-918

الترخيص

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

تنزيل الأداة