Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
mysql-mysqlbinlog-raw-path — MySQL Community Server 26.7.0 – Hoch – mysqlbinlog --raw Rotate-Pfad-Rest – Client-Dateischreibzugriff | Kitploit
Tools/GitHubGitHub/abraxas/mysql-mysqlbinlog-raw-path
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPenetrationstestsLabs & Praxis
GitHubabraxas/mysql-mysqlbinlog-raw-path

mysql-mysqlbinlog-raw-path

MySQL Community Server 26.7.0 – Hoch – mysqlbinlog --raw Rotate-Pfad-Rest – Client-Dateischreibzugriff

Repository anzeigen
vor 9 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Abraxas Labs - mysql-mysqlbinlog-raw-path

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

mysql-mysqlbinlog-raw-path

Klasse: Dateischreiben (Client) Reichweite: Remote (UI:R)

MySQL Community Server mysqlbinlog 26.7.0 (06a5c1c) - Oracle

mysqlbinlog --raw --read-from-remote-server kopiert eine Rotate-Event-new_log_ident in log_file_name, ohne den Basisnamen zu prüfen. Das nächste FORMAT_DESCRIPTION-Event my_fopent diesen Pfad und schreibt BINLOG_MAGIC plus das Event. Ein feindseliger Dump, der eine echte Rotate-Ident mit / sendet, schreibt diese Datei mit der Client-UID.

--raw ist die dokumentierte Remote-Binlog-Datei-Kopie. Der Fehler besteht darin, die Ident als Pfad zu behandeln.

IDnoch keine CVE
KlasseDateischreiben (Client --raw BINLOG_MAGIC)
ReichweiteRemote (Opfer führt mysqlbinlog --raw -R gegen einen Angreifer-Dump aus; UI:R)
CWECWE-22
CVSSHoch: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
ProduktMySQL Community Server mysqlbinlog
Betroffen26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
AuthOpfer führt mysqlbinlog --raw -R gegen einen Angreifer-Dump aus
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1. Witness-Datei mit BINLOG_MAGIC. Dateischreiben, kein RCE.

Was ein Angreifer tun kann

Einen MySQL-Protokoll-Server aufsetzen. COM_BINLOG_DUMP sprechen. Ein passendes gefälschtes Rotate senden (Timestamp 0, Ident entspricht dem angeforderten Log-Namen), damit der Dump nicht stoppt. Ein echtes Rotate senden (Timestamp != 0), dessen Ident /abs/path ist. Ein FORMAT_DESCRIPTION-Event senden.

Der Operator, der mysqlbinlog --raw -R ... mysql-bin.000001 ausgeführt hat, schreibt /abs/path mit der Client-UID. Der Inhalt sind Binlog-Bytes (\xfebin plus das FD-Event), keine beliebige Nutzlast. Jeden Pfad überschreiben, den die UID erstellen kann.

Ein echtes mysqld wird keine Rotate-Ident mit / ausgeben. Der Fehler liegt im Client.

Wie ich es gefunden habe

Dieselbe 26.7.0-Jagd wie mysqldump SHOW TABLES overflow und mysqldump --tab path. Der Standard-Daemon war leer. Client-Tools vertrauten weiterhin Remote-Namen.

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);
  }
}

Ein gefälschtes Rotate (when.tv_sec == 0), dessen Ident nicht mit dem angeforderten Log übereinstimmt, stoppt den Dump. Ein passendes gefälschtes Rotate wird nach der Kopie übersprungen (continue). Ein echtes Rotate stoppt nicht. Nächstes 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);

LOAD DATA-Temps bleiben SQL_LOAD_MB unter tmpdir. Geschlossen. Die Ident-Länge ist auf FN_REFLEN-1 begrenzt. / wird nicht entfernt.

Bereits dokumentierte Irrwege: Senden eines gefälschten Rotate, dessen Ident der Pfad ist (Dump stoppt); Verwenden von --result-file (Ident wird zum Präfix, anderer Fehler); ein echtes mysqld als Orakel; Checksums eingeschaltet gelassen.

Lab

cd lab
./run.sh

Image mysql:26.7.0. Binary /usr/libexec/mysqlsh/mysqlbinlog Ver 26.7.0 (in diesem Image nicht im PATH). Control-Stub: gefälschtes Rotate mysql-bin.000001 plus FD schreibt work/mysql-bin.000001. Traversal-Stub: passendes gefälschtes Rotate, echtes Rotate-Ident /work/oracle/MYSQL-BINLOG-RAW-WITNESS, FD schreibt diesen Pfad (BINLOG_MAGIC). Veröffentlicht 127.0.0.1:18620 / 18621. An Loopback binden. Dateischreiben von Binlog-Bytes, kein RCE. Kein --result-file.

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

Der Fix

basename von new_log_ident nehmen, bevor my_stpcpy / snprintf in log_file_name erfolgt. --raw sollte unter cwd oder dem --result-file-Präfix schreiben, nicht unter einer Ident mit /.

Referenzen

  • github.com/mysql/mysql-server Tag mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • client/mysqlbinlog.cc dump_remote_log_entries
  • Schwester-Pakete: abraxas/mysql-mysqldump-show-tables-overflow · abraxas/mysql-mysqldump-tab-path
Tool herunterladen