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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
mysql-mysqldump-show-tables-overflow — MySQL Community Server 26.7.0 - عالي - تجاوز سعة المكدس في mysqldump SHOW TABLES - تفريغ الأعطال UID | Kitploit
أدوات/GitHubGitHub/abraxas/mysql-mysqldump-show-tables-overflow
تحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيالتشفيراختبار الاختراقتحليل الملفات الثنائية
GitHubabraxas/mysql-mysqldump-show-tables-overflow

mysql-mysqldump-show-tables-overflow

MySQL Community Server 26.7.0 - عالي - تجاوز سعة المكدس في mysqldump SHOW TABLES - تفريغ الأعطال UID

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - mysql-mysqldump-show-tables-overflow

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  mysql-mysqldump-show-tables-overflow

mysql-mysqldump-show-tables-overflow

الفئة: انهيار الوصول: عن بُعد

MySQL Community Server mysqldump 26.7.0 (06a5c1c) - Oracle

يقوم mysqldump الافتراضي بنسخ أسماء SHOW TABLES دون حدّ NAME_LEN. تُعيد getTableName صفًا خامًا من mysql_fetch_row. تقوم dump_all_tables_in_db بنسخ ذلك النص عبر my_stpcpy إلى hash_key[2*NAME_LEN+2]، وتكتبه quote_name في مخزن مؤقت على المكدس بحجم 387 بايت دون أي حدّ. خادم خبيث يردّ باسم جدول أطول من 192 بايت يُسقط عملية النسخ الاحتياطي (UID).

خادم mysqld حقيقي لن يُصدر معرّفات بهذا الطول. ما تبقّى هو ثقة العميل بالبروتوكول.

المعرّفلا يوجد CVE بعد
الفئةانهيار (SIGSEGV في العميل؛ لم يُثبَت استغلال RCE)
الوصولعن بُعد (الضحية تشغّل mysqldump ضد خادم MySQL مهاجم؛ UI:R)
CWECWE-120، CWE-121
CVSSمرتفع: 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
المنتجMySQL Community Server mysqldump
المتأثر26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
المصادقةالضحية تشغّل mysqldump الافتراضي ضد خادم MySQL مهاجم
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط. إثبات الانهيار. لا حمولة RIP.

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

أنشئ خادمًا يتحدث بروتوكول MySQL. أكمل المصافحة. ردّ على جلسات SET. عندما يرسل العميل show tables، أعِد صفًا واحدًا اسمه بعشرات الكيلوبايتات.

المشغّل الذي وجّه mysqldump testdb نحو ذلك المضيف يُفيض مخزنًا مؤقتًا على المكدس في عملية النسخ الاحتياطي. المختبر على mysqldump Ver 26.7.0 يُنتج SIGSEGV. التحكم الموثوق بمؤشر التعليمات ليس جزءًا من هذه الحزمة. الانهيار هو.

نفس نموذج الضحية كعميل نسخ احتياطي موجّه نحو خادم خبيث. lock_tables هو الافتراضي عبر --opt. الفيض يقع في حلقة SHOW TABLES الأولى تلك.

كيف وجدته

أجريت واحدًا وثلاثين بحثًا في المصدر لـ https://github.com/mysql/mysql-server وسم https://github.com/mysql/mysql-server/tree/mysql-26.7.0. عادت نتائج mysqld الافتراضي غير المنشورة من فئة Crit/High فارغة. صفوف CPU High Server لشهر يوليو 2026 مغلقة على هذا الإصدار. كانت أدوات العميل هي الفئة المتبقية، بنفس شكل PostgreSQL pg_basebackup عند اتباع مسار خبيث.

static char *getTableName(int reset) {
  static MYSQL_RES *res = nullptr;
  MYSQL_ROW row;
  if (!res) {
    if (!(res = mysql_list_tables(mysql, NullS))) return (nullptr);
  }
  if ((row = mysql_fetch_row(res))) return ((char *)row[0]);
static char *quote_name(char *name, char *buff, bool force) {
  char *to = buff;
  const char qtype = ansi_quotes_mode ? '"' : '`';
  if (!force && !opt_quoted && !test_if_special_chars(name)) return name;
  *to++ = qtype;
  while (*name) {
    if (*name == qtype) *to++ = qtype;
    *to++ = *name++;
  }

قيمة NAME_LEN هي 64 * 3 = 192. حجم hash_key هو 386 بايت. تكتب quote_name في dump_table إلى table_buff[NAME_LEN+3].

مسارات خاطئة مسجّلة مسبقًا: اعتبار mysqld حقيقي هو المرجع (لن يُصدر معرّفًا بطول 193 بايت)؛ اسم بحجم 4KiB تمتصّه real_columns[MAX_FIELDS] على نفس الإطار الذي يحوي hash_key؛ ترجمة ASan من شجرة الخادم الكاملة؛ وصف الانهيار بأنه تحكم بمؤشر التعليمات.

المختبر

cd lab
./run.sh

الصورة mysql:26.7.0. خادم وهمي خبيث على compose stub:3306 (تحكم، جدول t) وstub:3307 (فيض، اسم بحجم 64KiB مع شاهد). منشور على 127.0.0.1:18600 / 18601. اربطه بواجهة loopback.

control-rc=2 control-signal=0
overflow-rc=139 overflow-signal=SIGSEGV
SUCCESS mysql-mysqldump-show-tables-overflow ... MYSQL-DUMP-SHOW-TABLES-OVERFLOW-WITNESS

يطبع التحكم ترويسة نسخ احتياطي 26.7.0 ويخرج بالرمز 2 عند SQL 1146. يموت الفيض مباشرة بعد show tables. لا يوجد LOCK TABLES على ذلك الاتصال.

الإصلاح

حدّد getTableName عند NAME_LEN. أعطِ quote_name طول المخزن المؤقت وارفض الكتابة بعده. يجب أن يكون my_stpcpy إلى hash_key نسخًا محدودًا. اسم SHOW TABLES خبيث ليس جدولًا.

المراجع

  • https://github.com/mysql/mysql-server وسم https://github.com/mysql/mysql-server/tree/mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • https://github.com/mysql/mysql-server/blob/mysql-26.7.0/client/mysqldump.cc getTableName، quote_name، dump_all_tables_in_db
  • https://github.com/mysql/mysql-server/blob/mysql-26.7.0/include/mysql_com.h NAME_LEN
  • https://github.com/mysql/mysql-server/blob/mysql-26.7.0/libmysql/libmysql.cc mysql_list_tables
تنزيل الأداة