Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
mysql-mysqldump-tab-path — MySQL Community Server 26.7.0 — высокий — остаточный путь mysqldump --tab — запись файла клиентом | Kitploit
Инструменты/GitHubGitHub/abraxas/mysql-mysqldump-tab-path
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииТестирование на ПроникновениеБезопасность Баз ДанныхЛаборатории и Практика
GitHub
abraxas/mysql-mysqldump-tab-path

mysql-mysqldump-tab-path

MySQL Community Server 26.7.0 — высокий — остаточный путь mysqldump --tab — запись файла клиентом

Репозиторий
19 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Abraxas Labs - mysql-mysqldump-tab-path

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  mysql-mysqldump-tab-path

mysql-mysqldump-tab-path

Класс: запись файла (клиент) Достижимость: удалённая (UI:R)

MySQL Community Server mysqldump 26.7.0 (06a5c1c) — Oracle

mysqldump --tab=DIR записывает по одному .sql на таблицу, используя fn_format без MY_REPLACE_DIR. Враждебное имя из SHOW TABLES, содержащее / или .., сохраняет этот каталог. DIR игнорируется. UID дампа выполняет my_fopen по этому пути.

--tab документирован как режим для одной машины, поскольку .txt проходит через серверный INTO OUTFILE. Но .sql всё равно записывается клиентом.

IDCVE пока нет
КлассЗапись файла (клиентский --tab .sql)
ДостижимостьУдалённая (жертва запускает mysqldump --tab против MySQL атакующего; UI:R)
CWECWE-22
CVSSHigh: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
ПродуктMySQL Community Server mysqldump
Затронуто26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
Аутентификацияжертва запускает mysqldump --tab=DIR против MySQL атакующего
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1. Свидетель .sql вне DIR.

Что может сделать атакующий

Поднять сервер с протоколом MySQL. Ответить на SHOW TABLES значением /abs/path или ../outside. Оператор, запустивший mysqldump --tab=/backup testdb, запишет /abs/path.sql (или путь относительно cwd) от имени UID дампа.

Перезаписать любой файл, который этот UID может создать. Тот же класс, что и клиент резервного копирования, доверяющий удалённому имени файла. Путь .txt через INTO OUTFILE — это серверный FILE. Остаётся клиентский .sql.

Настоящий mysqld не выдаст имя таблицы с /. Остаётся клиент.

Как я это нашёл

Та же охота на 26.7.0, что и mysqldump SHOW TABLES overflow. Демон по умолчанию был пуст. Клиентские утилиты всё ещё доверяли SHOW TABLES. Переполнение было одной из находок. --tab — следующей.

static FILE *open_sql_file_for_table(const char *table, int flags) {
  FILE *res;
  char filename[FN_REFLEN], tmp_path[FN_REFLEN];
  convert_dirname(tmp_path, path, NullS);
  res = my_fopen(fn_format(filename, table, tmp_path, ".sql",
                           MYF(MY_UNPACK_FILENAME | MY_APPEND_EXT)),
                 flags, MYF(MY_WME));
  return res;
}

mysys/mf_format.cc: если dirname_part(name) не пуст и MY_REPLACE_DIR выключен, переданный dir не используется.

Уже зафиксированные ложные пути: считать настоящий mysqld оракулом; падение на SHOW TABLE STATUS до SHOW CREATE TABLE (.sql открывается только после успешного CREATE); считать INTO OUTFILE .txt остатком; имя размером 64KiB, которое снова попадает в переполнение G1.

Это не MariaDB CVE-2025-13699 (обход имени представления в mariadb-dump). Тот же класс, но копия MySQL Community.

Лаборатория

cd lab
./run.sh

Образ mysql:26.7.0. --tab=/work/tabdir. Контрольная заглушка таблицы t записывает work/tabdir/t.sql. Заглушка обхода таблицы /work/oracle/MYSQL-DUMP-TAB-TRAVERSAL-WITNESS записывает work/oracle/MYSQL-DUMP-TAB-TRAVERSAL-WITNESS.sql. Опубликованы 127.0.0.1:18610 / 18611. Привяжите к loopback.

control-sql=yes
traversal-outside=yes
SUCCESS mysql-mysqldump-tab-path ... MYSQL-DUMP-TAB-TRAVERSAL-WITNESS

Исправление

Передавать MY_REPLACE_DIR в fn_format для клиентских файлов --tab или сначала брать basename от имени таблицы. --tab=DIR должен означать DIR.

Ссылки

  • github.com/mysql/mysql-server тег mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • client/mysqldump.cc open_sql_file_for_table
  • mysys/mf_format.cc
  • Сопутствующий пакет переполнения: abraxas/mysql-mysqldump-show-tables-overflow
Скачать инструмент