
Exploit automatisé pour CVE-2019-9053, une injection SQL aveugle basée sur le temps dans CMS Made Simple ≤2.2.9. Extrait les identifiants administrateur (nom d'utilisateur, email, hash du mot de passe + sel) et casse éventuellement le mot de passe hors ligne.
CVE-2019-9053 est une vulnérabilité d'injection SQL time-based blind qui affecte CMS Made Simple dans les versions ≤ 2.2.9. Elle ne nécessite pas d'authentification.
Le paramètre vulnérable est m1_idlist dans le module News (moduleinterface.php). Un attaquant peut l'exploiter pour extraire le hachage du mot de passe de l'administrateur, son nom d'utilisateur, son adresse e-mail et le salt utilisé pour le hachage.
Le schéma de stockage des mots de passe est MD5(salt + password), où le salt fait 8 octets. Cela permet, une fois le hachage et le salt obtenus, de tenter de casser le mot de passe hors ligne avec des outils comme hashcat ou John the Ripper.
CVSS 3.1 : 7,5 (ÉLEVÉ) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
| Champ | Valeur |
|---|---|
| CVE | CVE-2019-9053 |
| Produit | CMS Made Simple |
| Versions affectées | ≤ 2.2.9 |
| Type | Time-based Blind SQL Injection (CWE-89) |
| Authentification | Non requise |
| Vecteur | moduleinterface.php?mact=News,m1_,default,0&m1_idlist= |
| Impact | Extraction d'identifiants (utilisateur, email, hachage mot de passe + salt) |
| CVSS 3.1 | 7,5 ÉLEVÉ |
| Correctif | CMS Made Simple 2.2.10 |
Daniele Scanu — @Certimeter Group
L'exploit original se trouve sur Exploit-DB #46635.
requests, termcolorpip2 install requests termcolor
# Extraire les identifiants (salt, utilisateur, email, hachage mot de passe)
python 46635.py -u http://cible/cmsms
# Extraire les identifiants et tenter de casser le mot de passe avec une wordlist
python 46635.py -u http://cible/cmsms --crack -w /chemin/vers/rockyou.txt
| Paramètre | Description |
|---|---|
-u / --url | URL de base du CMS (ex. http://10.10.10.100/cms) |
-w / --wordlist | Wordlist pour casser le mot de passe (optionnel) |
-c / --crack | Activer le mode de cassage de mot de passe |
L'exploit envoie des requêtes HTTP avec des payloads SQL contenant SLEEP() pour déterminer caractère par caractère :
cms_siteprefs où sitepref_name = 'sitemask'cms_users où user_id = 1cms_usersMD5(salt + password)[+] Salt for password found: 5a599ef579066807
[+] Username found: jkr
[+] Email found: [email protected]
[+] Password found: 62def4866937f08cc13bab43bb14e6f7
moduleinterface.php