Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
mysql-mysqlbinlog-raw-path — MySQL Community Server 26.7.0 - Alto - mysqlbinlog --raw Rotate path leftover - client file write | Kitploit
Ferramentas/GitHubGitHub/abraxas/mysql-mysqlbinlog-raw-path
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoLabs e Prática
GitHubabraxas/mysql-mysqlbinlog-raw-path

mysql-mysqlbinlog-raw-path

MySQL Community Server 26.7.0 - Alto - mysqlbinlog --raw Rotate path leftover - client file write

Ver Repositório
há 9 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Abraxas Labs - mysql-mysqlbinlog-raw-path

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

mysql-mysqlbinlog-raw-path

Classe: Gravação de arquivo (cliente) Alcance: Remoto (UI:R)

MySQL Community Server mysqlbinlog 26.7.0 (06a5c1c) - Oracle

mysqlbinlog --raw --read-from-remote-server copia um new_log_ident de evento Rotate para log_file_name sem verificação de basename. O próximo evento FORMAT_DESCRIPTION faz my_fopen nesse caminho e grava BINLOG_MAGIC mais o evento. Um dump hostil que envia um ident Rotate real com / grava esse arquivo com o UID do cliente.

--raw é a cópia remota documentada de arquivo binlog. O resquício é tratar o ident como um caminho.

IDsem CVE ainda
ClasseGravação de arquivo (cliente --raw BINLOG_MAGIC)
AlcanceRemoto (vítima executa mysqlbinlog --raw -R contra um dump do 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
ProdutoMySQL Community Server mysqlbinlog
Afetado26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
Autenticaçãovítima executa mysqlbinlog --raw -R contra um dump do atacante
LicençaGNU Affero GPL v3.0
LabApenas 127.0.0.1. Arquivo testemunha com BINLOG_MAGIC. Gravação de arquivo, não RCE.

O que um atacante pode fazer

Suba um servidor de protocolo MySQL. Fale COM_BINLOG_DUMP. Envie um Rotate falso correspondente (timestamp 0, ident igual ao nome do log solicitado) para que o dump não pare. Envie um Rotate real (timestamp != 0) cujo ident seja /abs/path. Envie um evento FORMAT_DESCRIPTION.

O operador que executou mysqlbinlog --raw -R ... mysql-bin.000001 grava /abs/path com o UID do cliente. O conteúdo são bytes de binlog (\xfebin mais o evento FD), não um payload arbitrário. Sobrescreva qualquer caminho que o UID possa criar.

Um mysqld real não emitirá um ident Rotate com /. O resquício é o cliente.

Como eu encontrei

Mesma caçada da 26.7.0 que o mysqldump SHOW TABLES overflow e o mysqldump --tab path. O daemon padrão estava vazio. As ferramentas cliente ainda confiavam em nomes 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);
  }
}

Rotate falso (when.tv_sec == 0) cujo ident não corresponde ao log solicitado para o dump. Rotate falso correspondente é ignorado (continue) após a cópia. Rotate real não para. Próximo 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);

Os temporários de LOAD DATA permanecem SQL_LOAD_MB sob tmpdir. Fechado. O comprimento do ident é limitado a FN_REFLEN-1. / não é removido.

Caminhos errados já registrados: enviar um Rotate falso cujo ident é o caminho (o dump para); usar --result-file (o ident vira um prefixo, resquício diferente); um mysqld real como oráculo; checksums deixados ligados.

Lab

cd lab
./run.sh

Imagem mysql:26.7.0. Binário /usr/libexec/mysqlsh/mysqlbinlog Ver 26.7.0 (não está no PATH nessa imagem). Stub de controle: Rotate falso mysql-bin.000001 mais FD grava work/mysql-bin.000001. Stub de travessia: Rotate falso correspondente, Rotate real ident /work/oracle/MYSQL-BINLOG-RAW-WITNESS, FD grava esse caminho (BINLOG_MAGIC). Publicado 127.0.0.1:18620 / 18621. Vincule ao loopback. Gravação de arquivo de bytes de binlog, não RCE. Sem --result-file.

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

A correção

Pegue o basename de new_log_ident antes de my_stpcpy / snprintf para log_file_name. --raw deve gravar sob o cwd ou o prefixo de --result-file, não um ident com /.

Referências

  • github.com/mysql/mysql-server tag mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • client/mysqlbinlog.cc dump_remote_log_entries
  • Pacotes irmãos: abraxas/mysql-mysqldump-show-tables-overflow · abraxas/mysql-mysqldump-tab-path
Baixar ferramenta