
CMS Made Simple CVE-2019-9053 Exploit (Python 3)
Un portage Python 3 de l'exploit d'injection SQL aveugle basée sur le temps ciblant CMS Made Simple <= 2.2.9.
Exploit original par Daniele Scanu @ Certimeter Group.
| Champ | Détail |
|---|---|
| CVE | CVE-2019-9053 |
| Logiciel affecté | CMS Made Simple <= 2.2.9 |
| Type de vulnérabilité | Injection SQL aveugle basée sur le temps non authentifiée |
| Vecteur d'attaque | Réseau (aucune authentification requise) |
| Paramètre | m1_idlist dans le module News |
Le module News ne parvient pas à assainir le paramètre GET m1_idlist, permettant à un attaquant non authentifié d'extraire des données sensibles de la base de données caractère par caractère en utilisant des délais temporels.
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
| Option | Description |
|---|---|
-u, --url | URL de base de l'installation CMS Made Simple ciblée |
-w, --wordlist | Chemin vers un fichier de liste de mots pour le cassage de mot de passe |
-c, --crack | Active le mode de cassage de mot de passe (nécessite -w) |
python3 CVE-2019-9053_py3.py -u http://10.49.164.146/simple/ --crack -w /usr/share/wordlists/rockyou.txt
Sortie attendue :
[+] Salt for password found: 1234abcd
[+] Username found: admin
[+] Email found: [email protected]
[+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Password cracked: password123
cms_siteprefs pour la valeur sitemask (le sel du mot de passe)user_id = 1 depuis cms_usersuser_id = 1 depuis cms_usersuser_id = 1 depuis cms_usersMD5(salt + wordlist_entry) pour chaque ligne et le compare au hachage extraitL'injection utilise SELECT SLEEP(N) pour déduire chaque caractère — si la réponse est retardée, le caractère deviné est correct.
Astuce : Si le script est lent ou peu fiable, augmentez la variable
TIMEdans le script pour tenir compte de la latence réseau.
| Changement | Détail |
|---|---|
Instructions print | Converties en fonctions print() |
optparse | Remplacé par argparse (optparse est obsolète en Python 3) |
hashlib.md5() | L'entrée est désormais encodée en octets via .encode('utf-8') |
| Lecture de fichier | Remplacement de .readlines() par un bloc with et .strip() |
Ce projet est destiné à un usage éducatif uniquement. Reportez-vous aux conditions de licence de l'exploit original sur Exploit-DB.