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-mysqlbinlog-raw-path — MySQL Community Server 26.7.0 - Alta - mysqlbinlog --raw Rotate path leftover - escritura de archivo del cliente | Kitploit
Herramientas/GitHubGitHub/abraxas/mysql-mysqlbinlog-raw-path
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónLabs y Práctica
GitHubabraxas/mysql-mysqlbinlog-raw-path

mysql-mysqlbinlog-raw-path

MySQL Community Server 26.7.0 - Alta - mysqlbinlog --raw Rotate path leftover - escritura de archivo del cliente

Ver Repositorio
hace 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-mysqlbinlog-raw-path

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

mysql-mysqlbinlog-raw-path

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

MySQL Community Server mysqlbinlog 26.7.0 (06a5c1c) - Oracle

mysqlbinlog --raw --read-from-remote-server copia un new_log_ident de un evento Rotate en log_file_name sin comprobar el nombre base. El siguiente evento FORMAT_DESCRIPTION hace my_fopen sobre esa ruta y escribe BINLOG_MAGIC más el evento. Un volcado hostil que envía un ident Rotate real con / escribe ese archivo con el UID del cliente.

--raw es la copia remota de archivo binlog documentada. El residuo es tratar el ident como una ruta.

IDsin CVE todavía
ClaseEscritura de archivos (cliente --raw BINLOG_MAGIC)
AlcanceRemoto (la víctima ejecuta mysqlbinlog --raw -R contra un volcado del 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 mysqlbinlog
Afectado26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
Autenticaciónla víctima ejecuta mysqlbinlog --raw -R contra un volcado del atacante
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1. Archivo testigo con BINLOG_MAGIC. Escritura de archivos, no RCE.

Qué puede hacer un atacante

Levantar un servidor con protocolo MySQL. Hablar COM_BINLOG_DUMP. Enviar un Rotate falso coincidente (timestamp 0, ident igual al nombre de log solicitado) para que el volcado no se detenga. Enviar un Rotate real (timestamp != 0) cuyo ident sea /abs/path. Enviar un evento FORMAT_DESCRIPTION.

El operador que ejecutó mysqlbinlog --raw -R ... mysql-bin.000001 escribe /abs/path con el UID del cliente. El contenido son bytes de binlog (\xfebin más el evento FD), no una carga útil arbitraria. Sobrescribe cualquier ruta que el UID pueda crear.

Un mysqld real no emitirá un ident Rotate con /. El residuo es el cliente.

Cómo lo encontré

La misma caza de 26.7.0 que mysqldump SHOW TABLES overflow y mysqldump --tab path. El demonio por defecto estaba vacío. Las herramientas cliente seguían confiando en nombres remotos.

if (raw_mode) {
  if (output_file != nullptr) {
    snprintf(log_file_name, sizeof(log_file_name), "%s%s", output_file,
             rev->new_log_ident);
  } else {
    my_stpcpy(log_file_name, rev->new_log_ident);
  }
}

Un Rotate falso (when.tv_sec == 0) cuyo ident no coincide con el log solicitado detiene el volcado. Un Rotate falso coincidente se omite (continue) tras la copia. Un Rotate real no detiene. El siguiente FD:

if (!(result_file = my_fopen(
          log_file_name, O_WRONLY | MY_FOPEN_BINARY, MYF(MY_WME)))) {
  error("Could not create log file '%s'", log_file_name);

Los temporales de LOAD DATA permanecen como SQL_LOAD_MB bajo tmpdir. Cerrado. La longitud del ident está limitada a FN_REFLEN-1. / no se elimina.

Caminos equivocados ya registrados: enviar un Rotate falso cuyo ident es la ruta (el volcado se detiene); usar --result-file (el ident se convierte en un prefijo, residuo diferente); un mysqld real como oráculo; checksums dejados activados.

Laboratorio

cd lab
./run.sh

Imagen mysql:26.7.0. Binario /usr/libexec/mysqlsh/mysqlbinlog Ver 26.7.0 (no está en PATH en esa imagen). Stub de control: Rotate falso mysql-bin.000001 más FD escribe work/mysql-bin.000001. Stub de traversal: Rotate falso coincidente, Rotate real ident /work/oracle/MYSQL-BINLOG-RAW-WITNESS, FD escribe esa ruta (BINLOG_MAGIC). Publicado en 127.0.0.1:18620 / 18621. Enlázalo a loopback. Escritura de archivos de bytes de binlog, no RCE. Sin --result-file.

control-basename=yes
traversal-outside=yes
SUCCESS mysql-mysqlbinlog-raw-path ... MYSQL-BINLOG-RAW-WITNESS

La solución

Tomar el basename de new_log_ident antes de my_stpcpy / snprintf en log_file_name. --raw debería escribir bajo el cwd o el prefijo de --result-file, no un ident con /.

Referencias

  • github.com/mysql/mysql-server etiqueta mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • client/mysqlbinlog.cc dump_remote_log_entries
  • Paquetes hermanos: abraxas/mysql-mysqldump-show-tables-overflow · abraxas/mysql-mysqldump-tab-path
Descargar herramienta