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

रिपॉजिटरी देखें
5712 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

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

Class: Crash Reach: Remote

MySQL Community Server mysqldump 26.7.0 (06a5c1c) - Oracle

डिफ़ॉल्ट mysqldump SHOW TABLES नामों को बिना किसी NAME_LEN सीमा के कॉपी करता है। getTableName एक कच्चा mysql_fetch_row लौटाता है। dump_all_tables_in_db उस स्ट्रिंग को hash_key[2*NAME_LEN+2] में my_stpcpy करता है और quote_name उसे बिना किसी बाउंड के 387-बाइट स्टैक बफ़र में लिखता है। एक शत्रुतापूर्ण सर्वर जो 192 बाइट से लंबा टेबल नाम लौटाता है, डंप UID को क्रैश कर देता है।

एक वास्तविक mysqld इतने लंबे आइडेंटिफ़ायर नहीं देगा। बचा हुआ हिस्सा क्लाइंट का प्रोटोकॉल पर भरोसा करना है।

IDअभी तक कोई CVE नहीं
ClassCrash (क्लाइंट SIGSEGV; RCE प्रदर्शित नहीं)
ReachRemote (पीड़ित हमलावर MySQL के विरुद्ध mysqldump चलाता है; UI:R)
CWECWE-120, CWE-121
CVSSHigh: 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
ProductMySQL Community Server mysqldump
Affected26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
Authपीड़ित हमलावर MySQL के विरुद्ध डिफ़ॉल्ट mysqldump चलाता है
LicenseGNU Affero GPL v3.0
Labकेवल 127.0.0.1। क्रैश साक्षी। कोई RIP पेलोड नहीं।

हमलावर क्या कर सकता है

एक MySQL-प्रोटोकॉल सर्वर खड़ा करें। हैंडशेक पूरा करें। सत्र के SETs का उत्तर दें। जब क्लाइंट 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 खाली वापस आए। जुलाई 2026 CPU High Server पंक्तियाँ इस पिन पर बंद हैं। क्लाइंट टूल्स बची हुई श्रेणी थे, उसी आकार के जैसे 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 बाइट्स है। dump_table में quote_name table_buff[NAME_LEN+3] में लिखता है।

पहले से दर्ज गलत मोड़: एक वास्तविक mysqld को ओरेकल मानना (यह 193-बाइट आइडेंटिफ़ायर नहीं देगा); hash_key के समान फ़्रेम पर real_columns[MAX_FIELDS] द्वारा अवशोषित 4KiB नाम; पूर्ण सर्वर ट्री से ASan संकलित करना; क्रैश को इंस्ट्रक्शन-पॉइंटर नियंत्रण कहना।

लैब

cd lab
./run.sh

इमेज mysql:26.7.0। कंपोज़ stub:3306 (नियंत्रण, टेबल t) और stub:3307 (ओवरफ़्लो, 64KiB नाम सहित साक्षी) पर शत्रुतापूर्ण स्टब। प्रकाशित 127.0.0.1:18600 / 18601। इसे लूपबैक पर बाइंड करें।

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 डंप हेडर प्रिंट करता है और SQL 1146 पर 2 के साथ बाहर निकलता है। ओवरफ़्लो show tables के ठीक बाद मर जाता है। उस कनेक्शन पर कोई LOCK TABLES नहीं।

समाधान

getTableName को NAME_LEN पर सीमित करें। quote_name को एक बफ़र लंबाई दें और उससे आगे लिखने से इनकार करें। hash_key में my_stpcpy एक बाउंडेड कॉपी होना चाहिए। एक शत्रुतापूर्ण 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
टूल डाउनलोड करें