Dominando o Burp Suite Repeater para Testes de Segurança

Este guia explora o módulo Repeater do Burp Suite, uma ferramenta essencial para manipular e reenviar requisições HTTP em testes de segurança.

Introdução ao Burp Suite Repeater

O Repeater é um componente poderoso do Burp Suite que permite aos testadores de segurança capturar requisições HTTP/S interceptadas pelo Burp Proxy, modificá-las e reenviá-las ao servidor alvo múltiplas vezes. Essa capacidade é fundamental para identificar vulnerabilidades explorando variações de requisições e observando as respostas do servidor. Além de modificar requisições capturadas, o Repeater também permite a criação manual de novas requisições.

Interface do Repeater

A interface do Repeater é dividida em seis seções prinicpais:

  1. Lista de Requisições: No canto superior esquerdo, exibe todas as requisições enviadas para o Repeater.
  2. Controles de Requisição: Abaixo da lista, botões para enviar a requisição, cancelar uma em andamento e navegar pelo histórico de requisições.
  3. Visualização de Requisição e Resposta: A maior parte do painel esquerdo. A visualização de requisição permite a edição, enquanto a visualização de resposta exibe o resultado do servidor.
  4. Opções de Layout: No canto superior direito das visualizações de requisição/resposta, permite alternar entre layouts horizontal, vertical ou combinado.
  5. Inspetor (Inspector): Na lateral direita, detalha e facilita a edição dos componentes da requisição e resposta.
  6. Destino (Target): Acima do Inspetor, mostra o IP ou domínio do alvo, preenchido automaticamente ao enviar requisições de outras partes do Burp Suite.

Utilização Básica do Repeater

A forma mais comum de usar o Repeater é capturando uma requisição com o Burp Proxy e, em seguida, enviando-a para o Repeater. Isso pode ser feito clicando com o botão direito na requisição e selecionando "Send to Repeater" ou usando o atalho Ctrl + R.

Uma vez no Repeater, a requisição aparece na visualização de requisição. Clicar no botão "Send" envia a requisição ao servidor e a resposta é exibida na visualização de resposta. Modificações podem ser feitas diretamente na visualização de requisição e reenviadas clicando em "Send" novamente.

Exemplo de modificação de cabeçalho:


GET / HTTP/1.1
Host: exemplo.com
User-Agent: Mozilla/5.0 ...
Connection: close
FlagAuthorised: True
   

Alterar o valor de Connection de close para keep-alive pode ilustrar a capacidade de manipulação.

Opções de Visualização de Mensagens

O Repeater oferece diferentes formatos para visualizar as respostas (e requisições):

  • Pretty: Formato padrão, otimizado para legibilidade.
  • Raw: Exibe a resposta bruta, exatamente como recebida do servidor.
  • Hex: Apresenta a resposta em formato de bytes, útil para dados binários.
  • Render: Tenta renderizar a resposta como uma página web, similar à visualização em um navegador.

O botão \n permite visualizar caracteres não imprimíveis, como \r\n (CRLF), que são importantes na interpretação de cabeçalhos HTTP.

O Inspetor (Inspector)

O Inspetor é uma ferramenta complementar que decompõe requisições e respostas em componentes editáveis. Ele está presente tanto no Proxy quanto no Repeater.

Principais seções editáveis no Inspetor:

  • Request Attributes: Permite modificar o caminho (Path), método (Method) e protocolo (Protocol) da requisição.
  • Request Query Parameters: Parâmetros enviados na URL (ex: ?chave=valor).
  • Request Body Parameters: Parâmetros enviados no corpo de requisições POST.
  • Request Cookies: Cookies associados à requisição.
  • Request Headers: Cabeçalhos da requisição, permitindo adicionar, editar ou remover.

A seção Response Headers exibe os cabeçalhos da resposta do servidor, mas não é editável.

O formato tabular do Inspetor facilita a visualização e manipulação desses componentes.

Exemplo Prático: Adicionando um Cabeçalho

Capturar uma requisição para o host alvo e enviá-la ao Repeater. Usando o Inspetor, adicionar um novo cabeçalho chamado FlagAuthorised com o valor True. Reenviar a requisição e observar a resposta para encontrar a flag.


GET / HTTP/1.1
Host: 10.10.7.11
User-Agent: Mozilla/5.0 ...
Connection: close
Upgrade-Insecure-Requests: 1
FlagAuthorised: True
   

Após reenviar, a flag pode ser encontrada na resposta: THM{Yzg2MWI2ZDhlYzdlNGFiZTUzZTIzMzVi}.

Desafio: Testando Limites de Endpoints

Navegar para /products/ e clicar em "See More" redireciona para um endpoint numérico (ex: /products/3). Testar valores inesperados para este endpoint pode revelar vulnerabilidades.

Capturar a requisição para um produto válido e enviá-la ao Repeater. Modificar o ID para um valor inválido, como -1.


GET /products/-1 HTTP/1.1
Host: 10.10.107.186
...
   

Reenviar a requisição. Se o servidor não validar corretamente o input, a flag pode ser exposta: THM{N2MzMzFhMTA1MmZiYjA2YWQ4M2ZmMzhl}.

Exercício Abrangente: Testando SQL Injection

O endpoint /about/ID possui uma vulnerabilidade de SQL Injection. O objetivo é usar o Repeater para explorar essa falha e extrair um comentário sobre o CEO do banco de dados.

Capturar uma requisição para /about/2 e enviá-la ao Repeater.

Adicionar um apóstrofo (') ao final do ID (ex: /about/2') e reenviar. Um erro 500 Internal Server Error, possivelmente com detalhes da query SQL, indica a vulnerabilidade.


GET /about/2' HTTP/1.1
Host: 10.10.107.186
...
   

Analisando a resposta de erro, identificamos que a consulta envolve a tabela people e colunas como firstName, lastName, etc. Para listar todas as colunas da tabela people, usamos uma query UNION com information\_schema.columns:


/about/0 UNION ALL SELECT column_name,null,null,null,null FROM information_schema.columns WHERE table_name="people"
   

Para obter todas as colunas em uma única resposta, usamos group\_concat():


/about/0 UNION ALL SELECT group_concat(column_name),null,null,null,null FROM information_schema.columns WHERE table_name="people"
   

As colunas identificadas incluem notes. Para extrair o flag, construímos a payload final para selecionar a coluna notes do registro do CEO (ID 1):


0 UNION ALL SELECT notes,null,null,null,null FROM people WHERE id = 1
   

A flag extraída é: THM{ZGE3OTUyZGMyMzkwNjJmZjg3Mzk1NjJh}.

Tags: burp suite repeater proxy SQL Injection web security

Publicado em 7-31 13:48