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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/abraxas/phpmyadmin-importldi
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقمختبرات وتدريب عملي
GitHubabraxas/phpmyadmin-importldi

phpmyadmin-importldi

phpMyAdmin 5.2.3 - عالي - عن بُعد - SQLi - ImportLdi TERMINATED BY leftover

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - phpmyadmin-importldi

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

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

phpmyadmin-importldi

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

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

يبني ImportLdi.php عبارة LOAD DATA مع FIELDS/LINES TERMINATED BY من حقلي POST وهما ldi_terminated وldi_new_line. يُدمج هذان النصان داخل SQL محاط بعلامات اقتباس مفردة. أما ldi_enclosed وldi_escaped فيمرّان عبر escapeString. ويقوم phpMyAdmin بتعيين PMA_ENABLE_LDI على المسار /import بحيث يكون MYSQLI_OPT_LOCAL_INFILE مُفعّلًا.

يقوم مستخدم مسجّل الدخول بإرسال POST يحمل format=ldi مع علامة اقتباس في ldi_terminated. تحتوي عبارة LOAD DATA الناتجة على قيمة POST الخام داخل TERMINATED BY. أي حقن SQL في اتصال المستخدم، وليس في مستخدم التحكم.

المعرّفلا يوجد CVE بعد
الفئةSQLi
الوصولعن بُعد (تسجيل دخول مُصادَق عبر الكوكيز؛ استيراد جدول، الصيغة ldi)
CWECWE-89
CVSSمتوسط: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
المنتجphpMyAdmin
المتأثر5.2.3 الوسم RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
المصادقةتسجيل دخول مُصادَق عبر الكوكيز. استيراد جدول، الصيغة ldi
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

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

يمكن لمستخدم phpMyAdmin مسجّل الدخول يستطيع فتح استيراد الجدول أن يحقن SQL في LOAD DATA ... TERMINATED BY على اتصال MySQL الخاص به.

الصلاحيةالطريقة / نقطة الوصولالاستطلاع / السلامة / التوافرمُثبت مختبريًا أم مُستنتج
كسر النص الحرفي FIELDS TERMINATED BYPOST index.php?route=/import format=ldi ldi_terminated مع علامة اقتباسسلامة العبارة التي يبنيها PMAمُثبت مختبريًا. صندوق SQL في HTML: TERMINATED BY '',PMA-IMPORTLDI-WITNESS'
إبقاء ENCLOSED BY ضمن النطاقنفس طلب POST، علامة اقتباس في ldi_enclosedضابط سلبيمُثبت مختبريًا. ENCLOSED BY مُهرَّب
SQL إضافي على اتصال المستخدم (INTO OUTFILE / متعدد العبارات إن كان مسموحًا)نفس نقطة الوصول بمجرد إغلاق النصسلامة اتصال المستخدممُستنتج. يتوقف المختبر عند الفاصل المكسور. الافتراضي في mysqli::query هو عبارة واحدة
قراءة/كتابة ملفات من جهة MySQLنفس LOAD DATA إذا كان الحساب يملك FILE أو LOCAL INFILE إلى خادم الويبسلامة الملفات التي يستطيع mysqld الوصول إليهامُستنتج. غير ممنوح هنا. غير مُدّعى

مُغلق في هذا المختبر: الوصول غير المُصادَق، مستخدم التحكم / pmadb، LFI عبر include على مستوى نظام التشغيل، والقراءة/الكتابة المقيّدة بـ FILE. المستخدم المسجّل يملك بالفعل صندوق SQL؛ هذا المتبقي هو الفاصل غير المُهرَّب داخل عبارة يبنيها PMA من أجله.

نفس التثبيت: متبقي WebAuthn CustomServer.

كيف وجدته

ثبّتُّ phpMyAdmin RELEASE_5_2_3. إن إضافات الاستيراد التي تبني LOAD DATA يدويًا تستدعي تدقيق الاقتباس. حقلان من أصل أربعة حقول فاصلة كانا مُهرَّبين. وحقلان لم يكونا كذلك:

$sql .= ' FIELDS TERMINATED BY \'' . $ldi_terminated . '\'';
...
$sql .= ' LINES TERMINATED BY \'' . $ldi_new_line . '\'';

ldi_enclosed / ldi_escaped تستدعي $dbi->escapeString. يضبط Common.php قيمة PMA_ENABLE_LDI على /import + format=ldi. المسارات GET|POST /import و GET|POST /table/import.

المنعطفات الخاطئة المسجّلة سلفًا: الادعاء بوجود LFI دون منحة FILE؛ اعتبار مربع SQL هو الاكتشاف (المتبقي هو الفاصل غير المُهرَّب الذي يدمجه PMA)؛ الادعاء بمستخدم تحكم / pmadb؛ صدفة عكسية. مسرح.

المختبر

python3 phpmyadmin-importldi-Abraxas-Labs.py
# or: cd lab && ./run.sh

استهدف فقط http://127.0.0.1:19290. الصورتان phpmyadmin:5.2.3 وmysql:8.0. مشروع Compose باسم phpmyadmin-importldi. يتم تفكيك الحزمة بعد التشغيل.

تسجيل الدخول عبر ملف تعريف الارتباط. أرسل POST إلى /import مع format=ldi وعلامة اقتباس في ldi_terminated. صدر الأمر LOAD DATA LOCAL INFILE ... INTO TABLE \ldi_target` FIELDS TERMINATED BY '',PMA-IMPORTLDI-WITNESS'. العلامة نفسها في ldi_enclosedمخزّنة كـENCLOSED BYمهرّب. لا يزال التثبيت المصدري على صورة 5.2.3 يحتوي على'.$ldi_terminated.' و$dbi->escapeString($ldi_enclosed)`.

SUCCESS phpmyadmin-importldi pin=RELEASE_5_2_3 how=live TERMINATED-BY-raw ENCLOSED-escaped PMA-IMPORTLDI-WITNESS

الإصلاح

escapeString على ldi_terminated وldi_new_line، كما هو الحال مع enclosed وescaped. تحويل skip_queries إلى عدد صحيح (Int-cast).

المراجع

  • github.com/phpmyadmin/phpmyadmin وسم RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/Plugins/Import/ImportLdi.php
  • نفس التثبيت: PMA-5.2.3-WebAuthn-2FA
  • CWE-89

الترخيص

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

تنزيل الأداة