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
poc-CVE-2019-9053 — PoC didáctico en Python 3 para CVE-2019-9053, una SQL Injection time-based blind en CMS Made Simple <= 2.2.9. Esta versión fue adaptada para uso en CTF/laboratorio, con prefijos preconfigurados para reducir el tiempo de extracción y mensajes explicativos en portugués. | Kitploit
Herramientas/GitHubGitHub/rideckszz/poc-cve-2019-9053
Descifrado de ContraseñasAnálisis de VulnerabilidadesExplotación de Aplicaciones WebCTFAprendizaje y EducaciónLabs y Práctica
GitHubrideckszz/poc-cve-2019-9053

poc-CVE-2019-9053

PoC didáctico en Python 3 para CVE-2019-9053, una SQL Injection time-based blind en CMS Made Simple <= 2.2.9. Esta versión fue adaptada para uso en CTF/laboratorio, con prefijos preconfigurados para reducir el tiempo de extracción y mensajes explicativos en portugués.

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
15hace 3 mesesAún no revisado

PoC CVE-2019-9053 - CMS Made Simple SQL Injection

PoC didáctico en Python 3 para la CVE-2019-9053, una vulnerabilidad de SQL Injection time-based blind en CMS Made Simple <= 2.2.9.

Esta versión ha sido modificada para uso en CTF/laboratorio. Posee prefijos preconfigurados para reducir el tiempo de extracción y mensajes explicativos en español para ayudar a estudiantes a entender el funcionamiento del exploit.

Aviso

Este proyecto está destinado exclusivamente para fines educativos, laboratorios controlados y entornos de CTF.

No utilice este código contra sistemas de terceros sin autorización explícita.

El autor de este repositorio no se responsabiliza por el uso indebido de este material.

Vulnerabilidad

La CVE-2019-9053 afecta versiones antiguas de CMS Made Simple, permitiendo SQL Injection no autenticado a través del parámetro m1_idlist en el endpoint:

root@kitploit:~
/moduleinterface.php?mact=News,m1_,default,0

Como la respuesta de la consulta SQL no aparece directamente en la página, el exploit utiliza una técnica llamada time-based blind SQL Injection.

Cómo funciona el exploit

El exploit envía payloads que hacen que la base de datos ejecute sleep(1) cuando una condición es verdadera.

Ejemplo conceptual:

root@kitploit:~
AND (
  SELECT sleep(1)
  FROM cms_users
  WHERE password LIKE '0c01%'
)

Si el servidor tarda en responder, el script entiende que el prefijo probado es correcto.

Así, reconstruye información sensible carácter por carácter, como:

  • Salt de la contraseña
  • Nombre de usuario
  • Correo electrónico
  • Hash de la contraseña

En esta versión de CTF, algunos prefijos ya han sido incluidos en el código para reducir el tiempo necesario durante la actividad.

¿Qué es una SQL Injection time-based blind?

Una SQL Injection ocurre cuando la aplicación inserta datos controlados por el usuario dentro de una consulta SQL sin un tratamiento adecuado.

En este caso, la inyección es blind porque el resultado de la consulta no aparece directamente en la respuesta HTTP.

Es time-based porque el atacante usa el tiempo de respuesta del servidor como canal de respuesta. Si la condición probada es verdadera, la base de datos ejecuta un retardo con sleep(). Si es falsa, la respuesta llega normalmente.

Ejemplo simplificado:

root@kitploit:~
Pregunta que hace el exploit:
"¿El hash de la contraseña comienza con 0c01?"

Si es así:
La base de datos ejecuta sleep(1), y la respuesta tarda.

Si no:
La respuesta llega sin retardo perceptible.

Repitiendo este proceso carácter por carácter, el exploit logra reconstruir valores de la base de datos aunque no los vea directamente en la página.

¿Qué es un salt?

Un salt es un valor extra que se usa junto con la contraseña antes de generar el hash.

En este desafío, CMS Made Simple usa una lógica similar a:

root@kitploit:~
md5(salt + password)

Por ejemplo:

root@kitploit:~
salt = 1dac0d92e9fa6bb2
password = ejemplo123

El hash se calcularía a partir de:

root@kitploit:~
1dac0d92e9fa6bb2ejemplo123

El salt sirve para dificultar ataques con tablas precomputadas y para hacer que contraseñas iguales puedan generar hashes diferentes en contextos distintos.

A pesar de eso, md5(salt + password) es una forma antigua y débil de almacenamiento de contraseñas. Los sistemas modernos deben usar algoritmos diseñados para contraseñas, como:

  • Argon2
  • bcrypt
  • scrypt
  • PBKDF2

Modificaciones de esta versión CTF

Esta versión ha sido adaptada para facilitar su uso en una actividad práctica.

Principales cambios:

  • Código actualizado a Python 3.
  • Banner explicativo en español.
  • Explicación breve en la terminal sobre el funcionamiento del exploit.
  • Prefijos conocidos para acelerar la extracción.
  • Charset optimizado para salt y hash en hexadecimal.
  • Límite de tamaño para salt y hash.
  • Opción de cracking con wordlist.

Valores usados en el desafío:

root@kitploit:~
Salt completo: 1dac0d92e9fa6bb2
Username: mitch
Email: [email protected]
Hash completo: 0c01f4468bd75d7a84c7eb73846e8d96

Prefijos configurados en el exploit:

root@kitploit:~
Salt prefix: 1dac0d92
Username prefix: mit
Email prefix: admin@
Hash prefix: 0c01f446

Estos prefijos no eliminan la lógica del ataque. Solo reducen el tiempo necesario para la actividad en laboratorio.

Estructura del repositorio

root@kitploit:~
poc-CVE-2019-9053/
├── exploit_ctf.py
├── requirements.txt
├── README.md
├── wordlist-example.txt
└── .gitignore

Requisitos

  • Python 3
  • requests
  • termcolor

Instalación

Clone el repositorio:

root@kitploit:~
git clone https://github.com/SEU_USUARIO/poc-CVE-2019-9053.git
cd poc-CVE-2019-9053

Cree un entorno virtual:

root@kitploit:~
python3 -m venv .venv

Active el entorno virtual:

root@kitploit:~
source .venv/bin/activate

Instale las dependencias:

root@kitploit:~
pip install -r requirements.txt

requirements.txt

El archivo requirements.txt debe contener:

root@kitploit:~
requests
termcolor

Uso

Ejecución simple:

root@kitploit:~
python3 exploit_ctf.py -u http://target/cms

Ejecución con intento de descifrado de la contraseña usando wordlist:

root@kitploit:~
python3 exploit_ctf.py -u http://target/cms --crack -w wordlist-example.txt

Ver ayuda del script:

root@kitploit:~
python3 exploit_ctf.py -h

Ejemplo de wordlist

El archivo wordlist-example.txt puede contener:

root@kitploit:~
wrongpassword
admin123
dieema123
password
123456

Ejemplo de salida esperada

root@kitploit:~
[+] Salt de la contraseña encontrado: 1dac0d92e9fa6bb2
[+] Username encontrado: mitch
[+] Email encontrado: [email protected]
[+] Hash de la contraseña encontrado: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Contraseña encontrada: dieema123

Explicación del cracking

Después de que el exploit extrae el salt y el hash de la contraseña, puede intentar descubrir la contraseña en texto claro usando una wordlist.

La lógica probada es:

root@kitploit:~
md5(salt + contraseña_candidata)

Para cada contraseña de la wordlist, el script calcula el hash y lo compara con el hash extraído de la base de datos.

Ejemplo conceptual:

root@kitploit:~
candidate_hash = md5("1dac0d92e9fa6bb2" + "dieema123")

Si el resultado es igual al hash extraído, la contraseña ha sido encontrada.

Observaciones sobre tiempo de ejecución

Time-based SQL Injection suele ser lenta, porque cada carácter debe ser probado mediante varias peticiones.

Esta versión reduce el tiempo usando:

  • Prefijos conocidos.
  • Charset hexadecimal para salt y hash.
  • Tamaño máximo conocido para salt y hash.
  • Delay de 1 segundo por carácter correcto.

Aun así, el tiempo puede variar según:

  • Latencia de la red.
  • Carga del servidor.
  • Rendimiento de la base de datos.
  • Valor configurado en TIME_DELAY.

Si hay muchos falsos positivos o falsos negativos, aumente el valor de TIME_DELAY en el código.

Créditos

Versión Python 3 modificada para CTF por Derick G. Andrighetti.

Basado en un PoC público antiguo en Python 2 originalmente publicado por Daniele Scanu, de Certimeter Group.

Referencia

  • CVE-2019-9053
  • CMS Made Simple <= 2.2.9
  • Técnica: time-based blind SQL Injection

Licencia

Uso educativo.

Este material fue producido con fines de estudio, demostración en laboratorio y actividades de CTF.

Descargar herramienta