Explorando falhas de SQL Injection com SQLmap
O SQLMap é um scrip de exploração de falhas de SQL Injection.
Vou usar as falhas descobertas durante o post Encontrando Falhas em Aplicações Web com Uniscan para realizar os exemplos desta postagem. Um complementa o outro, então se você ainda não viu, recomenda que estude os exemplos dele primeiro.
Vou pegar para o exemplo a váriável http://testphp.vulnweb.com/artists.php?artist=1+AND+1=1 --dbs
A sintaxe ficaria sudo ./sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1+AND+1=1 --dbs
O SQLmap vai realizar vários testes no parâmetro até identificar o tipo de banco de dados que está rodando e se a variável é mesmo injetável. Neste exemplo, a vulnerabilidade foi positiva. Conseguimos identificar a existência de dois bancos rodando. O information_schema que é padrão do MySQL e um banco chamado "acuart". Vamos explorá-lo para ver o que conseguimos achar.
Vamos injetar mais scripts na variável, desta vez para que ela retorne as tabelas do banco.
sudo ./sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1+AND+1=1 -D acuart --tables
O Scrip nos retornou 8 tabelas do MySQL
Vamos executar o próximo passo em cima da tabela users, que provavelmente contenha alguma informação relevante como logins, e-mails, senhas e outras informações pessoais. Mas primeiro vamos identificar as colunas na tabela inserindo mais um dump de scrips do SQLmap
sudo ./sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1+AND+1=1 -D acuart -T users --columns
Podemos ver que o script nos trouxe mais informação. Ele identificou todas as 8 colunas da tabela 'users'. Podemos notar algumas informações importantes como name, uname, pass, email e cc que seria algum número de cartão de crédito.
Vamos fazer o select em forma de dump do SQLmap para extrair os dados dessas colunas. Vou fazer um teste extraindo só o que importa de inicio como nome, login e senha.
# sudo ./sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1+AND+1=1 -D acuart -T users -C 'name,uname,pass' --dump
Podemos ver que ele nos retornou exatamente o que esperávamos, um nome, um login e uma senha desencriptada ainda por cima.
É claro que este site não é sério, ele apenas simula as falhas e deixam os pentesters tocarem o terror por um tempo e depois voltam o backup anterior dentro de alguns períodos de tempo do dia. Em um ambiente real, não seria tão fácil assim. Provavelmente você encontraria hash com um ou mais níveis de criptografia e etc. Mas deu pra entender como a ferramenta funciona.
Vamos comprovar a falha:
http://testphp.vulnweb.com/login.php
login: test
senha: test
Perceba que conseguimos explorar a falha e obter acesso ao perfil do usuário.
Agora para dar aquela boa zoadinha de costume. Vamos realizar um exemplo de BRzagem.
Agora vamos executar o script novamente para verificar as modificações no banco de dados da vitima
Homenagem ao meu amigo Hermeto.
Lembrando que o SQLmap é um script para ser usado como ferramenta para testes de intrusão, e não para cometer crimes.
Veja também: Encontrando falhas em aplicações web com Uniscan
:)
Nenhum comentário