Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
mysql-jdv-definer-sqli — MySQL Community Server 26.7.0 - Alta - JSON Duality DEFINER SQLi - NO_BACKSLASH_ESCAPES | Kitploit
Herramientas/GitHubGitHub/abraxas/mysql-jdv-definer-sqli
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónSeguridad de Bases de DatosLabs y Práctica
GitHubabraxas/mysql-jdv-definer-sqli

mysql-jdv-definer-sqli

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

Ver Repositorio
12hace 10 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Abraxas Labs - mysql-jdv-definer-sqli

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

mysql-jdv-definer-sqli

Clase: SQLi Alcance: Remoto

MySQL Community Server mysqld 26.7.0 (06a5c1c) - Oracle

JSON Duality DML concatena valores de cadena JSON con escape_string_for_mysql (solo barra invertida), luego parse_sql bajo el sql_mode del invocador tras cambiar al sctx del DEFINER de la vista. SET SESSION sql_mode='NO_BACKSLASH_ESCAPES' hace que \' termine el literal SQL. Una cadena JSON que contiene ' inyecta una subconsulta / lista SET como DEFINER. Lab: invocador con solo DML sobre la vista lee secret.s en la columna proyectada name.

El CREATE VIEW por defecto es DEFINER. X Plugin ya ramifica según ese modo. JDV no. Condicionado por característica: requiere una JSON Duality View.

IDsin CVE todavía
ClaseSQLi (DEFINER; no RCE)
AlcanceRemoto (SQL autenticado; requiere DML sobre una JSON Duality View)
CWECWE-89
CVSSAlto: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProductoMySQL Community Server mysqld
Afectado26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
Authautenticado; INSERT o UPDATE sobre una JSON Duality View
LicenciaGNU Affero GPL v3.0
Labsolo 127.0.0.1. Testigo en $.name proyectado.

Qué puede hacer un atacante

Tener DML sobre una JSON Duality View SQL SECURITY DEFINER. SET SESSION sql_mode='NO_BACKSLASH_ESCAPES'. UPDATE (etag del SELECT) de un campo de cadena cuyo valor JSON contiene '. El literal generado _utf8mb4 '...' termina. El resto de la sentencia se ejecuta como DEFINER. El lab selecciona secret.s.note en la columna proyectada name. El SELECT directo sobre secret.s es 1142.

Sin ese sql_mode el mismo JSON se almacena como un nombre literal. La comilla permanece como dato.

Cómo lo encontré

La misma caza de 26.7.0. El daemon por defecto sin publicar Crit/Alto estaba vacío. JSON Duality DML sigue concatenando valores.

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

create_sctx_guard instala view_sctx antes de run_substmt. El sql_mode del invocador es lo que ve parse_sql.

Caminos erróneos: SQL SECURITY DEFINER entre el nombre de la vista y AS es 1064 (el valor por defecto ya es DEFINER). El mismo name que la fila actual se omite (is_equal); inyectar contra un valor diferente. El etag es obligatorio.

Lab

cd lab
./run.sh

Imagen mysql:26.7.0. Publicado 127.0.0.1:18640. Vista app.dv DEFINER root@% sobre app.t. Secreto en secret.s. La víctima tiene SELECT/INSERT/UPDATE solo sobre la vista.

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 solución

Escapar las cadenas de JDV DML con la misma rama NO_BACKSLASH_ESCAPES que X Plugin ya tiene (escape_sql_quote vs escape_string_for_mysql). Parametrizar el INSERT/UPDATE generado. No hacer parse_sql de valores concatenados bajo un sctx DEFINER.

Referencias

  • github.com/mysql/mysql-server tag mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • sql/json_duality_view/dml.cc append_json_dom / create_sctx_guard
  • Paquetes hermanos: abraxas/mysql-mysqldump-show-tables-overflow · abraxas/mysql-mysqldump-tab-path · abraxas/mysql-mysqlbinlog-raw-path · abraxas/mysql-set-role-leftover
Descargar herramienta