
CMS Made Simple CVE-2019-9053 Exploit (Python 3)
Um port para Python 3 do exploit de injeção SQL cega baseada em tempo, direcionado ao CMS Made Simple <= 2.2.9. Exploit original de Daniele Scanu @ Certimeter Group.
| Campo | Detalhe |
|---|---|
| CVE | CVE-2019-9053 |
| Software Afetado | CMS Made Simple <= 2.2.9 |
| Tipo de Vulnerabilidade | Injeção SQL Cega Baseada em Tempo Não Autenticada |
| Vetor de Ataque | Rede (nenhuma autenticação necessária) |
| Parâmetro | m1_idlist no módulo News |
O módulo News falha ao sanitizar o parâmetro GET m1_idlist, permitindo que um atacante não autenticado extraia dados sensíveis do banco de dados caractere por caractere usando atrasos de tempo.
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 | Descrição |
|---|---|
-u, --url | URL base da instalação do CMS Made Simple alvo |
-w, --wordlist | Caminho para um arquivo de wordlist para quebra de senha |
-c, --crack | Habilita o modo de quebra de senha (requer -w) |
python3 CVE-2019-9053_py3.py -u http://10.49.164.146/simple/ --crack -w /usr/share/wordlists/rockyou.txt
Saída esperada:
[+] Salt for password found: 1234abcd
[+] Username found: admin
[+] Email found: [email protected]
[+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Password cracked: password123
cms_siteprefs para obter o valor de sitemask (o salt da senha)user_id = 1 da tabela cms_usersuser_id = 1 da tabela cms_usersuser_id = 1 da tabela cms_usersMD5(salt + entrada_da_wordlist) para cada linha e compara com o hash extraídoA injeção usa SELECT SLEEP(N) para inferir cada caractere — se a resposta for atrasada, o caractere adivinhado está correto.
Dica: Se o script estiver lento ou instável, aumente a variável
TIMEdentro do script para compensar a latência da rede.
| Mudança | Detalhe |
|---|---|
Comandos print | Convertidos para funções print() |
optparse | Substituído por argparse (optparse está obsoleto no Python 3) |
hashlib.md5() | A entrada agora é codificada em bytes via .encode('utf-8') |
| Leitura de arquivo | .readlines() substituído por um bloco with e .strip() |
Este projeto é destinado apenas para uso educacional. Consulte os termos de licenciamento do exploit original no Exploit-DB.