Integrar sqlmap com um Proxy como Burp Suite

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a integrar o sqlmap, uma poderosa 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 de SQL, com um proxy de interceptação como o Burp Suite.

Usar um proxy com o sqlmap é uma habilidade crucial para profissionais de segurança. Ele permite que você veja os payloads exatos que o sqlmap está enviando, entenda sua lógica de teste, depure problemas potenciais e até mesmo modifique requisições em tempo real. Essa visibilidade é inestimável tanto para aprender como os ataques de injeção de SQL funcionam quanto para realizar avaliações de segurança mais avançadas e personalizadas.

Ao final deste laboratório, você será capaz de rotear o tráfego do sqlmap através do Burp Suite, observar as requisições geradas e analisar os padrões de ataque automatizados.

Configurar o Burp Suite para Escutar em uma Porta Local

Nesta etapa, você iniciará o Burp Suite e verificará se o seu proxy listener está ativo. O Burp Suite atua como um servidor proxy web, posicionando-se como um "man-in-the-middle" entre o seu navegador (ou, neste caso, o sqlmap) e a aplicação alvo. Por padrão, ele escuta por conexões de entrada na porta 8080 da máquina local (127.0.0.1).

Primeiro, vamos iniciar o Burp Suite. Você pode encontrá-lo no menu de aplicativos.

  1. Clique no Menu de Aplicativos (o ícone no canto superior esquerdo da tela).
  2. Navegue até Web -> Burp Suite Community Edition.
  3. Uma caixa de diálogo aparecerá. Você pode deixar as configurações padrão e clicar em Next.
  4. Outra caixa de diálogo solicitará que você selecione um projeto. Escolha Use Burp defaults e clique em Start Burp.

Assim que o Burp Suite carregar, você precisará verificar suas configurações de proxy.

  1. Clique na aba Proxy.
  2. Clique na sub-aba Options dentro da aba Proxy.
  3. Procure pela seção "Proxy Listeners". Você deverá ver uma entrada com a interface 127.0.0.1:8080 e a caixa de seleção "Running" marcada.

Isso confirma que o Burp Suite está ativamente escutando por tráfego na porta local 8080. Qualquer aplicação configurada para enviar tráfego para este endereço e porta terá suas requisições interceptadas e registradas pelo Burp Suite.

Configurar o sqlmap para Usar o Proxy com --proxy=http://127.0.0.1:8080

Nesta etapa, você aprenderá a instruir o sqlmap a enviar seu tráfego de rede através do proxy do Burp Suite que acabamos de configurar.

O sqlmap fornece um argumento de linha de comando simples, --proxy, para especificar um proxy HTTP. Você precisa fornecer o endereço do proxy no formato http://<host>:<porta>.

Como o Burp Suite está escutando em 127.0.0.1:8080, o argumento correto a ser usado é:

--proxy=http://127.0.0.1:8080

Quando você adiciona este argumento ao seu comando sqlmap, em vez de enviar requisições diretamente para o servidor web alvo, o sqlmap as enviará para http://127.0.0.1:8080. O Burp Suite então receberá essas requisições, as registrará e as encaminhará para o destino final.

Na próxima etapa, combinaremos este argumento de proxy com uma URL alvo para realizar uma varredura. Por enquanto, é importante entender que este único parâmetro é tudo o que é necessário para integrar as duas ferramentas.

Executar uma Varredura Básica com sqlmap

Nesta etapa, você executará uma varredura básica do sqlmap contra a aplicação web de teste, roteando o tráfego através do Burp Suite. Pediremos ao sqlmap para enumerar os bancos de dados no servidor.

Abra um terminal. Construiremos um comando que inclui:

  • A URL alvo: -u "http://127.0.0.1/index.php?id=1"
  • A configuração do proxy: --proxy=http://127.0.0.1:8080
  • A ação a ser realizada: --dbs (para enumerar bancos de dados)
  • Um flag não interativo: --batch (para responder automaticamente 'sim' a todas as perguntas)

Agora, execute o comando completo no seu terminal:

sqlmap -u "http://127.0.0.1/index.php?id=1" --proxy=http://127.0.0.1:8080 --dbs --batch

Você verá a saída do sqlmap no terminal enquanto ele começa a testar o alvo. Primeiro, ele confirmará que o parâmetro id é vulnerável e, em seguida, listará os bancos de dados disponíveis.

A saída deve ser semelhante a esta (os números de versão e alguns detalhes podem variar):

        ___
       __H__
 ___ ___[.]_____ ___ ___  {1.x.x#dev}
|_ -| . [.]     | .'| . |
|___|_  [.]_|_|_|__,|  _|
      |_|V...       |_|   http://sqlmap.org

[INFO] starting @ ...
...
[INFO] GET parameter 'id' is 'MySQL >= 5.0 boolean-based blind' injectable
[INFO] GET parameter 'id' is 'MySQL >= 5.0.12 stacked queries' injectable
[INFO] GET parameter 'id' is 'MySQL >= 5.0.12 time-based blind' injectable
...
[INFO] fetching database names
[INFO] the following databases are available [4]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] sys

[INFO] fetched data logged to text files under '/home/labex/.sqlmap/output/127.0.0.1'

Enquanto o sqlmap está em execução, ele está enviando centenas de requisições através do Burp Suite.

Observar o Tráfego Gerado pelo sqlmap no Histórico HTTP do Burp Suite

Nesta etapa, você voltará ao Burp Suite para ver o tráfego que o sqlmap gerou durante sua varredura.

Traga a janela do Burp Suite para a frente.

  1. Certifique-se de estar na aba Proxy.
  2. Clique na sub-aba HTTP history.

Agora você verá uma tabela preenchida com requisições HTTP. Todas essas requisições foram enviadas pelo sqlmap para o servidor alvo através do proxy do Burp.

Reserve um momento para observar a lista:

  • Host: Todas as requisições são direcionadas para 127.0.0.1.
  • Method: A maioria das requisições são GET.
  • URL: A URL é sempre /index.php, mas o parâmetro id na string de consulta muda a cada requisição.

Esta visualização fornece um log completo da atividade do sqlmap. Você pode ver o grande volume de requisições que uma ferramenta automatizada gera para testar uma única classe de vulnerabilidade. Este é o principal benefício de usar um proxy: ele torna as operações da "caixa preta" da ferramenta visíveis.

Analisar os Payloads Enviados pelo sqlmap através do Proxy

Nesta etapa, você examinará mais de perto as requisições individuais para entender os payloads específicos que o sqlmap usa para detectar e explorar vulnerabilidades de injeção de SQL.

Na aba HTTP history do Burp Suite, clique em qualquer requisição na lista. Ao selecionar uma requisição, dois novos painéis aparecerão abaixo da lista: Request e Response.

Clique no painel Request para visualizar a requisição HTTP bruta enviada pelo sqlmap. Preste muita atenção ao parâmetro id na URL. Você verá vários payloads sendo testados.

Por exemplo, você pode encontrar um payload de injeção cega baseada em booleano como este:

GET /index.php?id=1%20AND%208003=8003 HTTP/1.1
Host: 127.0.0.1
...

Aqui, o sqlmap está testando se a aplicação responde de forma diferente quando uma condição verdadeira (AND 8003=8003) é injetada. O %20 é a representação codificada em URL de um espaço.

Você também pode encontrar um payload de injeção cega baseada em tempo:

GET /index.php?id=1%20AND%20(SELECT%202079%20FROM%20(SELECT(SLEEP(5)))IImL) HTTP/1.1
Host: 127.0.0.1
...

Com este payload, o sqlmap está injetando um comando SLEEP(5). Se o servidor levar 5 segundos a mais para responder, o sqlmap saberá que a injeção foi bem-sucedida e que o banco de dados é vulnerável.

Ao analisar essas requisições, você obtém uma compreensão muito mais profunda de como os scanners automatizados funcionam. Você pode ver a lógica que eles usam para confirmar vulnerabilidades, o que é muito mais educativo do que apenas ver o resultado final no terminal.

Resumo

Neste laboratório, você integrou com sucesso a ferramenta de varredura automatizada sqlmap com o proxy de interceptação do Burp Suite.

Você aprendeu a:

  • Iniciar o Burp Suite e confirmar que seu listener de proxy está em execução em 127.0.0.1:8080.
  • Usar o argumento --proxy no sqlmap para rotear todo o seu tráfego através do Burp Suite.
  • Executar uma varredura com o proxy habilitado para gerar tráfego.
  • Observar a lista completa de requisições HTTP na aba HTTP history do Burp Suite.
  • Analisar requisições individuais para entender os payloads específicos de injeção de SQL baseados em booleano e em tempo que o sqlmap utiliza para identificar vulnerabilidades.

Esta técnica é fundamental para qualquer testador de segurança web, pois fornece insights críticos sobre o comportamento de ferramentas automatizadas e permite maior controle e análise durante um teste de penetração.