Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
mysql-mysqlbinlog-raw-path — MySQL Community Server 26.7.0 - Alta - mysqlbinlog --raw Rotate path leftover - scrittura file lato client | Kitploit
Strumenti/GitHubGitHub/abraxas/mysql-mysqlbinlog-raw-path
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration TestingLab e Pratica
GitHubabraxas/mysql-mysqlbinlog-raw-path

mysql-mysqlbinlog-raw-path

MySQL Community Server 26.7.0 - Alta - mysqlbinlog --raw Rotate path leftover - scrittura file lato client

Vedi Repository
9 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Abraxas Labs - mysql-mysqlbinlog-raw-path

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

mysql-mysqlbinlog-raw-path

Classe: Scrittura di file (client) Reach: Remoto (UI:R)

MySQL Community Server mysqlbinlog 26.7.0 (06a5c1c) - Oracle

mysqlbinlog --raw --read-from-remote-server copia un new_log_ident di un evento Rotate in log_file_name senza alcun controllo sul basename. Il successivo evento FORMAT_DESCRIPTION esegue my_fopen su quel percorso e scrive BINLOG_MAGIC più l'evento. Un dump ostile che invia un ident Rotate reale con / scrive quel file con l'UID del client.

--raw è la copia documentata del file binlog remoto. Il residuo è il fatto che l'ident venga trattato come un percorso.

IDnessuna CVE al momento
ClasseScrittura di file (client --raw BINLOG_MAGIC)
ReachRemoto (la vittima esegue mysqlbinlog --raw -R contro un dump dell'attaccante; 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
ProdottoMySQL Community Server mysqlbinlog
Affetto26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
Authla vittima esegue mysqlbinlog --raw -R contro un dump dell'attaccante
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1. File testimone con BINLOG_MAGIC. Scrittura di file, non RCE.

Cosa può fare un attaccante

Mettere in piedi un server con protocollo MySQL. Parlare COM_BINLOG_DUMP. Inviare un finto Rotate corrispondente (timestamp 0, ident uguale al nome del log richiesto) in modo che il dump non si fermi. Inviare un Rotate reale (timestamp != 0) il cui ident è /abs/path. Inviare un evento FORMAT_DESCRIPTION.

L'operatore che ha eseguito mysqlbinlog --raw -R ... mysql-bin.000001 scrive /abs/path con l'UID del client. Il contenuto è costituito da byte di binlog (\xfebin più l'evento FD), non da un payload arbitrario. Sovrascrive qualsiasi percorso che quell'UID può creare.

Un mysqld reale non emetterà un ident Rotate con /. Il residuo è il client.

Come l'ho trovato

Stessa caccia alla 26.7.0 di mysqldump SHOW TABLES overflow e mysqldump --tab path. Il daemon predefinito era vuoto. Gli strumenti client si fidavano ancora dei nomi remoti.

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 finto Rotate (when.tv_sec == 0) il cui ident non corrisponde al log richiesto ferma il dump. Un finto Rotate corrispondente viene saltato (continue) dopo la copia. Un Rotate reale non ferma. Il successivo 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);

I file temporanei di LOAD DATA restano SQL_LOAD_MB sotto tmpdir. Chiuso. La lunghezza dell'ident è limitata a FN_REFLEN-1. / non viene rimosso.

Vicoli ciechi già registrati: inviare un finto Rotate il cui ident è il percorso (il dump si ferma); usare --result-file (l'ident diventa un prefisso, residuo diverso); un mysqld reale come oracolo; checksum lasciati attivi.

Lab

cd lab
./run.sh

Immagine mysql:26.7.0. Binario /usr/libexec/mysqlsh/mysqlbinlog Ver 26.7.0 (non nel PATH in quell'immagine). Stub di controllo: finto Rotate mysql-bin.000001 più FD scrive work/mysql-bin.000001. Stub di traversal: finto Rotate corrispondente, Rotate reale ident /work/oracle/MYSQL-BINLOG-RAW-WITNESS, FD scrive quel percorso (BINLOG_MAGIC). Pubblicati 127.0.0.1:18620 / 18621. Associalo al loopback. Scrittura di file di byte di binlog, non RCE. Nessun --result-file.

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

La correzione

Prendere il basename di new_log_ident prima di my_stpcpy / snprintf in log_file_name. --raw dovrebbe scrivere sotto la cwd o il prefisso di --result-file, non un ident con /.

Riferimenti

  • github.com/mysql/mysql-server tag mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • client/mysqlbinlog.cc dump_remote_log_entries
  • Pacchetti affini: abraxas/mysql-mysqldump-show-tables-overflow · abraxas/mysql-mysqldump-tab-path
Scarica lo strumento