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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
phpmyadmin-csrf-sql — phpMyAdmin 5.2.3 - عالي - عن بُعد - CSRF - إزالة الرمز على /sql | Kitploit
أدوات/GitHubGitHub/abraxas/phpmyadmin-csrf-sql
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقمختبرات وتدريب عملي
GitHubabraxas/phpmyadmin-csrf-sql

phpmyadmin-csrf-sql

phpMyAdmin 5.2.3 - عالي - عن بُعد - CSRF - إزالة الرمز على /sql

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - phpmyadmin-csrf-sql

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

التحليل المكتوب: https://abraxaslabs.tech/research/phpmyadmin-csrf-sql

phpmyadmin-csrf-sql

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

phpMyAdmin 5.2.3 (الوسم RELEASE_5_2_3، الالتزام 962857e). يبني Common.php طلب PSR-7 من المتغيرات العامة قبل checkTokenRequestParam. عند عدم التطابق، يمسح Sanitize::removeRequestVars كلاً من $_POST و$_GET لكنه لا يمسح تلك اللقطة. بعد ذلك يُنسخ $sql_query من $request->getParsedBodyParam('sql_query'). طلبات AJAX POST تتوقف عند عدم تطابق الرمز. طلبات POST غير AJAX تستمر. يفضّل SqlController قيمة $_POST['sql_query'] المُجرَّدة، وإلا فإنه يحتفظ بالقيمة العامة.

يكفي وجود ضحية تملك ملف تعريف ارتباط جلسة phpMyAdmin. أرسل POST إلى index.php?route=/sql مع sql_query وبدون رمز صالح، وبدون ajax_request. يُنفَّذ استعلام SELECT باسم مستخدم MySQL ذلك. الإعداد الافتراضي CookieSameSite=Strict في 5.2.3 يحجب العديد من المتصفحات عبر المواقع. أما same-site أو Lax أو None أو مصادقة HTTP فما تزال تصيبه. هذه ضابطة CSRF معطوبة في كل الأحوال.

المعرّفلا يوجد CVE بعد
الفئةCSRF
الوصولعن بُعد. الإعداد الافتراضي CookieSameSite=Strict يحجب العديد من المتصفحات عبر المواقع. تبقى same-site / Lax / None / مصادقة HTTP.
CWECWE-352
CVSSعالٍ: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
المنتجphpMyAdmin
المتأثر5.2.3 الوسم RELEASE_5_2_3 (962857e)
المصادقةملف تعريف ارتباط جلسة phpMyAdmin للضحية (أو مصادقة HTTP). بدون رمز CSRF صالح.
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:19240 فقط

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

أي شخص يستطيع جعل متصفح الضحية يرسل POST إلى phpMyAdmin بدون ajax_request يمكنه تنفيذ SQL باسم مستخدم MySQL ذلك.

الصلاحيةالطريقة / المسارمُثبت مختبريًا أو مُستنتج
تنفيذ SQL المهاجم باسم حساب MySQL للضحية (سلامة + استطلاع لصندوق SQL ذلك)POST index.php?route=/sql sql_query=... db=... بدون token، بدون ajax_requestمُثبت مختبريًا. احتوى جسم النتائج على PMA-CSRF-SQL-WITNESS. أظهر السجل العام استعلام SELECT باسم appuser
إيقاف المعالج نفسه على AJAXنفس POST مع ajax_request=1مُثبت مختبريًا. Token mismatch. صف علامة INSERT غائب. لم يُنفّذ السجل العام ذلك INSERT
تجاوز المعالجات التي تقرأ فقط $_POST المُجرَّدةPOST /database/structure/drop-table بدون رمزمُثبت مختبريًا. keepme ما يزال موجودًا
نفس الثغرة في التصدير (SaveDir)، DROP/TRUNCATE للقسم، قفل الحساب، /config/set، إنشاء pmadbأي معالج يقرأ جسم PSR-7 بعد التجريدمُستنتج. لم يُختبر

مغلق في هذا المختبر: PMA غير المُصادَق (يتطلب تسجيل دخول بملف تعريف ارتباط أولًا)، مسارات AJAX (تخرج عند عدم التطابق)، drop-table بدون رمز، صدفة نظام التشغيل. يعني الإعداد الافتراضي Strict SameSite أن نموذجًا كلاسيكيًا عبر المواقع غالبًا لن يرسل ملف تعريف الارتباط؛ ومع ذلك يبقى المتبقي فحص CSRF فاشلًا على same-site وعلى عمليات نشر Lax/None.

كيف وجدتها

ثماني عمليات بحث متوازية في المصدر لـ RELEASE_5_2_3. يُنشئ Common.php $request = createFromGlobals() قبل checkTokenRequestParam(). عند عدم التطابق، يمسح Sanitize::removeRequestVars() كلاً من $_POST/$_GET فقط. غير AJAX يستمر. يستخدم SqlController المتغير العام $sql_query إذا كان $_POST فارغًا. المسار GET|POST /sql.

المنعطفات الخاطئة: التعامل مع AJAX /sql على أنه المتبقي (فهو يُجهض بسبب عدم تطابق الرمز)؛ التعامل مع drop-table على أنه المتبقي (ذلك المعالج يقرأ فقط $_POST المُجرَّد)؛ التعامل مع Strict SameSite الافتراضي على أنه "CSRF مغلق" (فالتحكم لا يزال معطوبًا؛ وتبقى same-site / Lax / None).

المختبر

python3 phpmyadmin-csrf-sql-Abraxas-Labs.py

أو

cd lab
./run.sh

للاسترجاع المحلي فقط: http://127.0.0.1:19240. الصور phpmyadmin:5.2.3 و mysql:8.0. مشروع Compose phpmyadmin-csrf-sql. الـ PoC عبارة عن POST للاسترجاع المحلي من نفس الموقع (لا يزال Strict SameSite يرسل الكوكي). الشاهد PMA-CSRF-SQL-WITNESS.

SUCCESS phpmyadmin-csrf-sql sql-ran=yes ajax-abort=yes drop-held=yes PMA-CSRF-SQL-WITNESS

الإصلاح

عند عدم التطابق، استبدل الطلب بجسم فارغ، أو ارفض جميع طلبات POST، وليس طلبات AJAX فقط. لا تنسخ sql_query من طلب قديم. افشل بشكل مغلق مثل تسجيل الخروج.

المراجع

  • github.com/phpmyadmin/phpmyadmin وسم RELEASE_5_2_3 (962857e)
  • لقطة طلب libraries/classes/Common.php قبل إزالة الرمز
  • Sanitize::removeRequestVars يمسح $_POST/$_GET فقط
  • SqlController العام $sql_query
  • بقايا نفس التثبيت: phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-setup-validate
  • CWE-352

الترخيص

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

تنزيل الأداة