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-jdv-definer-sqli — MySQL Community Server 26.7.0 – Hoch – JSON Duality DEFINER SQLi – NO_BACKSLASH_ESCAPES | Kitploit
Tools/GitHubGitHub/abraxas/mysql-jdv-definer-sqli
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsDatenbanksicherheitLabs & Praxis
GitHubabraxas/mysql-jdv-definer-sqli

mysql-jdv-definer-sqli

MySQL Community Server 26.7.0 – Hoch – JSON Duality DEFINER SQLi – NO_BACKSLASH_ESCAPES

Repository anzeigen
12vor 10 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-jdv-definer-sqli

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  mysql-jdv-definer-sqli

mysql-jdv-definer-sqli

Klasse: SQLi Reichweite: Remote

MySQL Community Server mysqld 26.7.0 (06a5c1c) - Oracle

JSON Duality DML verkettet JSON-String-Werte mit escape_string_for_mysql (nur Backslash) und führt dann parse_sql unter dem Invoker-sql_mode aus, nachdem auf den View-DEFINER-sctx umgeschaltet wurde. SET SESSION sql_mode='NO_BACKSLASH_ESCAPES' bewirkt, dass \' das SQL-Literal beendet. Ein JSON-String, der ' enthält, injiziert eine Subquery / SET-Liste als DEFINER. Lab: Invoker mit ausschließlich DML auf der View liest secret.s in die projizierte Spalte name.

Das Standard-CREATE VIEW ist DEFINER. Das X Plugin verzweigt bereits auf diesen Modus. JDV nicht. Feature-gated: benötigt eine JSON Duality View.

IDnoch keine CVE
KlasseSQLi (DEFINER; kein RCE)
ReichweiteRemote (authentifiziertes SQL; benötigt DML auf einer JSON Duality View)
CWECWE-89
CVSSHigh: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProduktMySQL Community Server mysqld
Betroffen26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
Authauthentifiziert; INSERT oder UPDATE auf einer JSON Duality View
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1. Nachweis in projiziertem $.name.

Was ein Angreifer tun kann

DML auf einer SQL SECURITY DEFINER JSON Duality View besitzen. SET SESSION sql_mode='NO_BACKSLASH_ESCAPES'. UPDATE (Etag aus SELECT) eines String-Felds, dessen JSON-Wert ' enthält. Das generierte _utf8mb4 '...'-Literal endet. Der Rest der Anweisung läuft als DEFINER. Das Lab selektiert secret.s.note in die projizierte Spalte name. Direktes SELECT auf secret.s ist 1142.

Ohne diesen sql_mode wird dasselbe JSON als literaler Name gespeichert. Das Anführungszeichen bleibt Daten.

Wie ich es gefunden habe

Dieselbe 26.7.0-Jagd. Standard-Daemon ohne veröffentlichte Crit/High war leer. JSON Duality DML verkettet weiterhin Werte.

sbuf.append("_utf8mb4 '");
escape_string_for_mysql(&my_charset_utf8mb4_bin, ...);
sbuf.append(1, '\'');

create_sctx_guard installiert view_sctx vor run_substmt. Der Invoker-sql_mode ist das, was parse_sql sieht.

Irrwege: SQL SECURITY DEFINER zwischen dem View-Namen und AS ist 1064 (Standard ist bereits DEFINER). Derselbe name wie die aktuelle Zeile wird übersprungen (is_equal); gegen einen anderen Wert injizieren. Etag ist erforderlich.

Lab

cd lab
./run.sh

Image mysql:26.7.0. Veröffentlicht 127.0.0.1:18640. View app.dv DEFINER root@% über app.t. Secret in secret.s. Opfer hat nur SELECT/INSERT/UPDATE auf der View.

SUCCESS mysql-jdv-definer-sqli victim-secret=denied nbe-inject=yes view-has-witness=yes default-mode-inject=no dump=26.7.0 image=mysql:26.7.0 MYSQL-JDV-DEFINER-SQLI-WITNESS

Der Fix

JDV-DML-Strings mit demselben NO_BACKSLASH_ESCAPES-Zweig escapen, den das X Plugin bereits hat (escape_sql_quote vs escape_string_for_mysql). Das generierte INSERT/UPDATE parametrisieren. Verkettete Werte nicht unter einem DEFINER-sctx parse_sql unterziehen.

Referenzen

  • github.com/mysql/mysql-server Tag mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • sql/json_duality_view/dml.cc append_json_dom / create_sctx_guard
  • Schwester-Pakete: abraxas/mysql-mysqldump-show-tables-overflow · abraxas/mysql-mysqldump-tab-path · abraxas/mysql-mysqlbinlog-raw-path · abraxas/mysql-set-role-leftover
Tool herunterladen