Realizar um Ataque Sniper no Burp Intruder

Beginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a realizar um ataque "Sniper", um dos tipos de ataque mais fundamentais e comumente usados na ferramenta Intruder do Burp Suite. O Burp Intruder é uma ferramenta poderosa para automatizar ataques personalizados contra aplicações web, a fim de identificar e explorar vulnerabilidades de segurança.

O ataque Sniper é projetado para iterar através de uma lista de payloads, inserindo-os um por um em uma única posição especificada dentro de uma requisição HTTP. Isso o torna ideal para tarefas como adivinhar nomes de usuário, encontrar tokens de redefinição de senha ou realizar fuzzing em um único parâmetro em busca de vulnerabilidades.

Vamos percorrer o processo de envio de uma requisição para o Intruder, configuração da posição do payload, seleção do tipo de ataque Sniper, carregamento de uma lista de payloads simples e, finalmente, o lançamento do ataque e a análise dos resultados. Para este laboratório, o Burp Suite já está instalado no ambiente.

Em Intruder > Positions, Selecione um Valor de Parâmetro e Clique em 'Add §'

Nesta etapa, você definirá o alvo para o seu ataque. Após enviar uma requisição para o Intruder, você precisa especificar exatamente onde os payloads devem ser inseridos.

Primeiro, você precisa ter uma requisição para trabalhar. Para o propósito deste laboratório, assumiremos que você já interceptou uma requisição de login no Burp Proxy e a enviou para o Intruder (clicando com o botão direito na requisição e escolhendo "Send to Intruder"). A requisição no Intruder pode parecer com isto:

POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=myuser&password=mypass

Por padrão, o Burp Intruder adiciona automaticamente marcadores de payload (§) em torno do que ele considera serem partes interessantes da requisição. Para obter controle preciso, é melhor limpá-los e definir os seus próprios.

  1. Navegue até a aba Intruder > Positions.
  2. Clique no botão Clear § no lado direito para remover todos os marcadores de payload adicionados automaticamente.
  3. No editor de requisição, use o mouse para destacar apenas o valor do parâmetro username (neste caso, myuser).
  4. Com o valor destacado, clique no botão Add §.

Sua requisição agora deve parecer com isto, com apenas o valor do nome de usuário marcado como uma posição de payload:

POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=§myuser§&password=mypass

Isso informa ao Intruder para inserir payloads apenas no lugar de myuser, deixando o restante da requisição inalterado para cada tentativa.

Defina o Tipo de Ataque para 'Sniper'

Nesta etapa, você selecionará o tipo de ataque apropriado para o seu objetivo. O Burp Intruder oferece quatro tipos de ataque diferentes, cada um servindo a um propósito distinto. Para este laboratório, usaremos o Sniper.

Aqui está um breve resumo dos tipos de ataque:

  • Sniper: Usa um único conjunto de payloads. Ele atinge cada posição de payload (§...§) uma por uma. Para cada posição, ele itera por todos os payloads da lista. Este é o tipo mais comum para fuzzing de um único parâmetro.
  • Battering ram: Usa um único conjunto de payloads. Ele insere o mesmo payload em todas as posições de payload definidas simultaneamente.
  • Pitchfork: Usa múltiplos conjuntos de payloads. Para cada requisição, ele pega um payload de cada conjunto e os coloca em suas posições correspondentes.
  • Cluster bomb: Usa múltiplos conjuntos de payloads. Ele testa todas as combinações possíveis de payloads de todos os conjuntos.

Como nosso objetivo é testar uma lista de diferentes nomes de usuário em um único parâmetro, o Sniper é a escolha perfeita.

Para definir o tipo de ataque:

  1. Permaneça na aba Intruder > Positions.
  2. Localize o menu suspenso Attack type na parte superior da tela.
  3. Clique no menu suspenso e selecione Sniper na lista.

Agora você configurou o Intruder para usar o método de ataque Sniper.

Nesta etapa, você se moverá para a seção onde definirá os dados reais que serão usados no ataque. Agora que você configurou a posição alvo (username) e o tipo de ataque (Sniper), o próximo passo lógico é fornecer a lista de payloads.

Os payloads são os valores que o Intruder substituirá na posição §...§ que você definiu na Etapa 1.

Para prosseguir, simplesmente navegue até a sub-aba Payloads dentro da ferramenta Intruder. Você a encontrará localizada bem ao lado da aba Positions em que você estava trabalhando. Clicar nesta aba o levará para a tela de configuração de payloads, onde você configurará sua lista de nomes de usuário potenciais na próxima etapa.

Carregue uma Lista Simples de Payloads (ex: admin, test, user)

Nesta etapa, você configurará a lista de payloads para o ataque. Como nosso tipo de ataque é Sniper e temos uma posição de payload, precisamos configurar apenas um conjunto de payloads.

Na aba Intruder > Payloads, você verá as seções Payload Sets e Payload Options.

  1. Na seção Payload Sets, certifique-se de que Payload set esteja definido como 1 e Payload type esteja definido como Simple list. Esta é a configuração padrão e é usada para fornecer uma lista direta de strings.
  2. Na seção Payload Options [Simple list], você adicionará seus payloads. Você pode fazer isso digitando diretamente na caixa de texto ou usando o botão Add.

Vamos adicionar alguns nomes de usuário comuns para testar: Na área de texto, digite os seguintes valores, cada um em uma nova linha:

admin
test
user
root
guest

Sua seção Payload Options agora deve conter esta lista. O Intruder enviará uma requisição para cada linha desta lista, substituindo o valor no parâmetro username que você marcou anteriormente. O Payload Count na parte inferior agora deve mostrar 5.

Inicie o Ataque e Observe a Tabela de Resultados

Nesta etapa, você lançará o ataque configurado e analisará o resultado. Com a posição, o tipo de ataque e os payloads definidos, você está pronto para começar.

  1. Para iniciar o ataque, clique no botão Start attack localizado no canto superior direito da aba Intruder.
  2. Uma nova janela "Attack" será aberta, exibindo uma tabela de resultados. Esta janela será preenchida em tempo real à medida que o Intruder envia cada requisição.

A tabela de resultados é a parte mais importante do processo. Preste muita atenção às colunas, especialmente:

  • Payload: O payload específico usado para aquela requisição (ex: admin, test).
  • Status: O código de status HTTP da resposta (ex: 200, 302, 401).
  • Length: O tamanho do corpo da resposta em bytes.

Para encontrar potenciais vulnerabilidades ou nomes de usuário válidos, procure por anomalias. Por exemplo, um login bem-sucedido pode resultar em um status 302 Found (redirecionando para um painel), enquanto todas as tentativas falhas resultam em um 200 OK (exibindo novamente a página de login). Da mesma forma, uma resposta para um nome de usuário válido pode ter um Length diferente das outras porque a mensagem de erro muda (ex: "Senha incorreta" vs. "Usuário não encontrado").

Ao classificar a tabela pelas colunas Status ou Length, você pode facilmente identificar quaisquer respostas que sejam diferentes da linha de base, indicando uma descoberta potencial.

Resumo

Neste laboratório, você realizou com sucesso um ataque básico do tipo Sniper usando o Burp Intruder. Esta é uma habilidade fundamental para qualquer testador de segurança de aplicações web.

Você aprendeu a:

  • Isolar um parâmetro de requisição específico para teste na aba Positions, limpando marcadores padrão e adicionando os seus.
  • Definir o tipo de ataque como Sniper, que é ideal para testar um único parâmetro com uma lista de payloads.
  • Navegar até a aba Payloads e carregar uma lista simples e personalizada de entradas potenciais.
  • Lançar o ataque e analisar a tabela de resultados, procurando por anomalias nos códigos de status HTTP e nos comprimentos das respostas para identificar comportamentos interessantes.

Dominar o ataque Sniper no Burp Intruder fornece um método poderoso para automatizar tarefas de teste repetitivas, como enumeração de nomes de usuário, adivinhação de senhas e fuzzing para vulnerabilidades comuns.