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-jdv-definer-sqli — MySQL Community Server 26.7.0 - Alta - JSON Duality DEFINER SQLi - NO_BACKSLASH_ESCAPES | Kitploit
Strumenti/GitHubGitHub/abraxas/mysql-jdv-definer-sqli
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingSicurezza dei DatabaseLab e Pratica
GitHubabraxas/mysql-jdv-definer-sqli

mysql-jdv-definer-sqli

MySQL Community Server 26.7.0 - Alta - JSON Duality DEFINER SQLi - NO_BACKSLASH_ESCAPES

Vedi Repository
19 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-jdv-definer-sqli

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

mysql-jdv-definer-sqli

Classe: SQLi Portata: Remota

MySQL Community Server mysqld 26.7.0 (06a5c1c) - Oracle

Il DML JSON Duality concatena i valori stringa JSON con escape_string_for_mysql (solo backslash), poi parse_sql sotto l'sql_mode dell'invoker dopo lo scambio al sctx del DEFINER della view. SET SESSION sql_mode='NO_BACKSLASH_ESCAPES' fa terminare il letterale SQL con \'. Una stringa JSON contenente ' inietta una sottoquery / SET-list come DEFINER. Lab: invoker con solo DML sulla view legge secret.s nella colonna proiettata name.

Il CREATE VIEW predefinito è DEFINER. X Plugin effettua già il branch su quella modalità. JDV no. Feature-gated: richiede una JSON Duality View.

IDnessuna CVE al momento
ClasseSQLi (DEFINER; non RCE)
PortataRemota (SQL autenticato; richiede DML su una 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
ProdottoMySQL Community Server mysqld
Affetto26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
Authautenticato; INSERT o UPDATE su una JSON Duality View
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1. Witness in $.name proiettato.

Cosa può fare un attaccante

Possiede DML su una JSON Duality View SQL SECURITY DEFINER. SET SESSION sql_mode='NO_BACKSLASH_ESCAPES'. UPDATE (etag da SELECT) di un campo stringa il cui valore JSON contiene '. Il letterale generato _utf8mb4 '...' termina. Il resto dell'istruzione viene eseguito come DEFINER. Il lab seleziona secret.s.note nella colonna proiettata name. La SELECT diretta su secret.s restituisce 1142.

Senza quel sql_mode lo stesso JSON viene memorizzato come nome letterale. La virgoletta resta un dato.

Come l'ho trovato

Stessa caccia alla 26.7.0. Il daemon predefinito non pubblicava Crit/High. Il DML JSON Duality concatena comunque i valori.

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

create_sctx_guard installa view_sctx prima di run_substmt. L'sql_mode dell'invoker è ciò che vede parse_sql.

Vicoli ciechi: SQL SECURITY DEFINER tra il nome della view e AS restituisce 1064 (il default è già DEFINER). Lo stesso name della riga corrente viene saltato (is_equal); iniettare contro un valore diverso. L'etag è obbligatorio.

Lab

cd lab
./run.sh

Immagine mysql:26.7.0. Pubblicata su 127.0.0.1:18640. View app.dv DEFINER root@% su app.t. Secret in secret.s. La vittima ha solo SELECT/INSERT/UPDATE sulla 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

La correzione

Effettuare l'escape delle stringhe DML JDV con lo stesso branch NO_BACKSLASH_ESCAPES che X Plugin già possiede (escape_sql_quote vs escape_string_for_mysql). Parametrizzare l'INSERT/UPDATE generato. Non eseguire parse_sql sui valori concatenati sotto un sctx DEFINER.

Riferimenti

  • github.com/mysql/mysql-server tag mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • sql/json_duality_view/dml.cc append_json_dom / create_sctx_guard
  • Pacchetti affini: abraxas/mysql-mysqldump-show-tables-overflow · abraxas/mysql-mysqldump-tab-path · abraxas/mysql-mysqlbinlog-raw-path · abraxas/mysql-set-role-leftover
Scarica lo strumento