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 قابلاً للوصول

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - phpmyadmin-setup-validate

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  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 إلى المضيف والمنفذ والمستخدم وكلمة المرور الموجودة في حقل values بصيغة JSON.

يقوم عميل غير مُصادَق عليه بإرسال GET إلى / للحصول على ملف تعريف الجلسة والرمز، ثم يرسل POST إلى setup/validate.php بالقيمة id=Server مع Servers/1/host و Servers/1/port حسب اختياره. يفتح مضيف phpMyAdmin مصافحة MySQL عبر TCP إلى ذلك العنوان. هذا هو 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 في الإعداد. لم يُطبَّق فحص "تعطيل الإعداد عند وجود الإعدادات" أبدًا على 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
تأكيد أن واجهة الإعداد معطّلة بينما يبقى validate مفعّلًاGET /setup/index.phpمُثبَت في المختبر. يحتوي النص على "setup is disabled" / الإعدادات موجودة بالفعل
الفشل الآمن دون رمز 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 بدون رمز صفحة تسجيل الدخول (صفر إصابات على الكاشف)؛ اعتبار هذا 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 ويشغّل كاشف 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. مختبر استرجاع محلي فقط. بدون ضمان.

تنزيل الأداة