
CMS Made Simple CVE-2019-9053 Exploit (Python 3)
Una adaptación a Python 3 del exploit de inyección SQL ciega basada en tiempo dirigido a CMS Made Simple <= 2.2.9.
Exploit original de Daniele Scanu @ Certimeter Group.
| Campo | Detalle |
|---|---|
| CVE | CVE-2019-9053 |
| Software afectado | CMS Made Simple <= 2.2.9 |
| Tipo de vulnerabilidad | Inyección SQL ciega basada en tiempo sin autenticación |
| Vector de ataque | Red (no requiere autenticación) |
| Parámetro | m1_idlist en el módulo News |
El módulo News no sanitiza el parámetro GET m1_idlist, lo que permite a un atacante no autenticado extraer datos sensibles de la base de datos carácter por carácter mediante retrasos de tiempo.
pip install requests termcolor
python3 CVE-2019-9053_py3.py -u http://target/cms
python3 CVE-2019-9053_py3.py -u http://target/cms --crack -w /path/to/wordlist.txt
python3 CVE-2019-9053_py3.py --help
| Opción | Descripción |
|---|---|
-u, --url | URL base de la instalación objetivo de CMS Made Simple |
-w, --wordlist | Ruta a un archivo de diccionario para el craqueo de contraseñas |
-c, --crack | Activa el modo de craqueo de contraseñas (requiere -w) |
python3 CVE-2019-9053_py3.py -u http://10.49.164.146/simple/ --crack -w /usr/share/wordlists/rockyou.txt
Salida esperada:
[+] Salt for password found: 1234abcd
[+] Username found: admin
[+] Email found: [email protected]
[+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Password cracked: password123
cms_siteprefs para obtener el valor sitemask (el salt de la contraseña)user_id = 1 de cms_usersuser_id = 1 de cms_usersuser_id = 1 de cms_usersMD5(salt + wordlist_entry) para cada línea y lo compara con el hash volcadoLa inyección utiliza SELECT SLEEP(N) para inferir cada carácter — si la respuesta se retrasa, el carácter adivinado es correcto.
Consejo: Si el script es lento o poco fiable, aumente la variable
TIMEdentro del script para compensar la latencia de red.
| Cambio | Detalle |
|---|---|
Sentencias print | Convertidas a funciones print() |
optparse | Reemplazado por argparse (optparse está obsoleto en Python 3) |
hashlib.md5() | La entrada ahora se codifica a bytes mediante .encode('utf-8') |
| Lectura de archivos | Se reemplazó .readlines() por un bloque with y .strip() |
Este proyecto es solo para uso educativo. Consulte los términos de licencia del exploit original en Exploit-DB.