Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
mysql-mysqldump-tab-path — MySQL Community Server 26.7.0 - Alta - ruta residual de mysqldump --tab - escritura de archivo del cliente | Kitploit
Herramientas/GitHubGitHub/abraxas/mysql-mysqldump-tab-path
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónPruebas de PenetraciónSeguridad de Bases de DatosLabs y Práctica
GitHub
abraxas/mysql-mysqldump-tab-path

mysql-mysqldump-tab-path

MySQL Community Server 26.7.0 - Alta - ruta residual de mysqldump --tab - escritura de archivo del cliente

Ver Repositorio
1hace 9 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Abraxas Labs - mysql-mysqldump-tab-path

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

mysql-mysqldump-tab-path

Clase: Escritura de archivo (cliente) Alcance: Remoto (UI:R)

MySQL Community Server mysqldump 26.7.0 (06a5c1c) - Oracle

mysqldump --tab=DIR escribe un .sql por tabla usando fn_format sin MY_REPLACE_DIR. Un nombre hostil de SHOW TABLES con / o .. conserva ese directorio. DIR se ignora. El UID del dump hace my_fopen sobre la ruta.

--tab está documentado como modo en la misma máquina porque el .txt pasa por el INTO OUTFILE del servidor. El .sql sigue siendo una escritura del cliente.

IDsin CVE todavía
ClaseEscritura de archivo (cliente --tab .sql)
AlcanceRemoto (la víctima ejecuta mysqldump --tab contra un MySQL atacante; UI:R)
CWECWE-22
CVSSAlto: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
ProductoMySQL Community Server mysqldump
Afectado26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
Authla víctima ejecuta mysqldump --tab=DIR contra un MySQL atacante
LicenciaGNU Affero GPL v3.0
Labsolo 127.0.0.1. Testigo .sql fuera de DIR.

Qué puede hacer un atacante

Levanta un servidor con protocolo MySQL. Responde a SHOW TABLES con /abs/path o ../outside. El operador que ejecutó mysqldump --tab=/backup testdb escribe /abs/path.sql (o una ruta relativa al cwd) como el UID del dump.

Sobrescribe cualquier archivo que ese UID pueda crear. Misma clase que un cliente de backup que confía en un nombre de archivo remoto. La ruta .txt de INTO OUTFILE es FILE del lado del servidor. El residuo es el .sql del cliente.

Un mysqld real no emitirá un nombre de tabla con /. El residuo es el cliente.

Cómo lo encontré

La misma caza de 26.7.0 que mysqldump SHOW TABLES overflow. El daemon por defecto estaba vacío. Las herramientas cliente seguían confiando en SHOW TABLES. El overflow fue un residuo. --tab fue el siguiente.

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: si dirname_part(name) no está vacío y MY_REPLACE_DIR está desactivado, el dir dado no se usa.

Caminos equivocados ya registrados: tratar un mysqld real como el oráculo; morir en SHOW TABLE STATUS antes de SHOW CREATE TABLE (el .sql se abre solo después de que CREATE tiene éxito); llamar al .txt de INTO OUTFILE el residuo; un nombre de 64KiB que vuelve a golpear el overflow G1.

No es MariaDB CVE-2025-13699 (traversal de nombre de vista en mariadb-dump). Misma clase, copia de MySQL Community.

Lab

cd lab
./run.sh

Imagen mysql:26.7.0. --tab=/work/tabdir. La tabla stub de control t escribe work/tabdir/t.sql. La tabla stub de traversal /work/oracle/MYSQL-DUMP-TAB-TRAVERSAL-WITNESS escribe work/oracle/MYSQL-DUMP-TAB-TRAVERSAL-WITNESS.sql. Publicado en 127.0.0.1:18610 / 18611. Enlázalo a loopback.

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

La solución

Pasar MY_REPLACE_DIR a fn_format para los archivos del cliente --tab, o tomar primero el basename del nombre de la tabla. --tab=DIR debería significar DIR.

Referencias

  • github.com/mysql/mysql-server tag mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • client/mysqldump.cc open_sql_file_for_table
  • mysys/mf_format.cc
  • Paquete hermano de overflow: abraxas/mysql-mysqldump-show-tables-overflow
Descargar herramienta