
CMS Made Simple CVE-2019-9053 Exploit (Python 3)
Un port per Python 3 dell'exploit di SQL injection cieca basata sul tempo che prende di mira CMS Made Simple <= 2.2.9.
Exploit originale di Daniele Scanu @ Certimeter Group.
| Campo | Dettaglio |
|---|---|
| CVE | CVE-2019-9053 |
| Software interessato | CMS Made Simple <= 2.2.9 |
| Tipo di vulnerabilità | SQL Injection cieca basata sul tempo non autenticata |
| Vettore di attacco | Rete (nessuna autenticazione richiesta) |
| Parametro | m1_idlist nel modulo News |
Il modulo News non sanifica il parametro GET m1_idlist, consentendo a un attaccante non autenticato di estrarre dati sensibili dal database carattere per carattere tramite ritardi temporali.
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
| Flag | Descrizione |
|---|---|
-u, --url | URL di base dell'installazione di CMS Made Simple presa di mira |
-w, --wordlist | Percorso di un file wordlist per il cracking della password |
-c, --crack | Abilita la modalità di cracking della password (richiede -w) |
python3 CVE-2019-9053_py3.py -u http://10.49.164.146/simple/ --crack -w /usr/share/wordlists/rockyou.txt
Output previsto:
[+] Salt for password found: 1234abcd
[+] Username found: admin
[+] Email found: [email protected]
[+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Password cracked: password123
cms_siteprefs per il valore sitemask (il salt della password)user_id = 1 da cms_usersuser_id = 1 da cms_usersuser_id = 1 da cms_usersMD5(salt + wordlist_entry) per ogni riga e lo confronta con l'hash estrattoL'injection utilizza SELECT SLEEP(N) per dedurre ogni carattere — se la risposta è ritardata, il carattere ipotizzato è corretto.
Suggerimento: se lo script è lento o inaffidabile, aumenta la variabile
TIMEall'interno dello script per tenere conto della latenza di rete.
| Modifica | Dettaglio |
|---|---|
Istruzioni print | Convertite in funzioni print() |
optparse | Sostituito con argparse (optparse è deprecato in Python 3) |
hashlib.md5() | L'input ora viene codificato in byte tramite .encode('utf-8') |
| Lettura dei file | Sostituito .readlines() con un blocco with e .strip() |
Questo progetto è destinato esclusivamente a uso didattico. Fare riferimento ai termini di licenza dell'exploit originale su Exploit-DB.