Modificar uma Requisição HTTP em Tempo Real no Burp Proxy

Beginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá os fundamentos da interceptação e modificação de tráfego web usando o Burp Suite, uma das ferramentas mais populares para testes de segurança de aplicações web. A capacidade de interceptar uma requisição HTTP, alterar seu conteúdo antes que ele chegue ao servidor e, em seguida, observar a resposta é uma habilidade fundamental para descobrir uma ampla gama de vulnerabilidades, como manipulação de parâmetros (parameter tampering) e referências diretas inseguras a objetos (insecure direct object references).

Você usará o Burp Proxy para capturar uma requisição do seu navegador, modificar um parâmetro de URL em tempo real e encaminhá-la para uma aplicação web simples em execução localmente. Este exercício prático demonstrará como um proxy pode ser usado para manipular a comunicação entre um cliente e um servidor.

Habilitar Modo de Interceptação na Aba Proxy

Nesta etapa, você iniciará o Burp Suite e habilitará sua funcionalidade principal para interceptar tráfego. O Burp Proxy atua como um "man-in-the-middle" (intermediário) entre seu navegador e o servidor web alvo, permitindo que você visualize e altere todo o tráfego que passa por ele.

Primeiro, abra o lançador de aplicações no canto superior esquerdo da área de trabalho e inicie o Burp Suite.

  1. Clique em "Temporary project" e depois em "Next".
  2. Selecione "Use Burp defaults" e clique em "Start Burp".

Assim que o Burp Suite estiver aberto, navegue até a aba Proxy. É aqui que você controla a interceptação do tráfego HTTP.

Dentro da aba Proxy, você verá várias sub-abas. Certifique-se de estar na sub-aba Intercept. Aqui, você encontrará um botão que ativa e desativa a interceptação. Por padrão, ele pode estar desativado.

Clique no botão que diz "Intercept is off" para habilitá-lo. O texto do botão mudará para "Intercept is on", e ele aparecerá pressionado.

Agora, o Burp Proxy está ativamente aguardando para capturar a próxima requisição HTTP feita pelo navegador pré-configurado neste ambiente de laboratório.

Nesta etapa, você gerará uma requisição HTTP a partir do navegador web e a capturará no Burp Suite. Como o modo de interceptação está ativado, o Burp reterá a requisição, impedindo que ela chegue ao servidor até que você decida o que fazer com ela.

Abra o navegador web fornecido no ambiente de laboratório. O navegador já está configurado para enviar seu tráfego através do Burp Proxy em execução em 127.0.0.1:8080.

Na barra de endereços do navegador, navegue até a aplicação web simples que foi iniciada pelo script de configuração. Digite a seguinte URL e pressione Enter:

http://127.0.0.1:5000/search?q=books

Você notará que a aba do navegador exibe um ícone de carregamento e a página não carrega. Este é o comportamento esperado. Ele indica que o Burp Proxy interceptou com sucesso a requisição e está aguardando sua ação.

Agora, volte para a janela do Burp Suite. Na aba Proxy -> Intercept, você verá o conteúdo bruto da requisição HTTP que seu navegador acabou de enviar.

GET /search?q=books HTTP/1.1
Host: 127.0.0.1:5000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
...

Você agora capturou com sucesso uma requisição HTTP antes que ela chegasse ao seu destino.

Alterar um Valor de Parâmetro na Visualização 'Raw' da Requisição

Nesta etapa, você modificará a requisição HTTP interceptada. Este é o cerne da adulteração de requisições em tempo real. Você pode alterar qualquer parte da requisição, incluindo o método, caminho, cabeçalhos ou corpo. Para este laboratório, você alterará um parâmetro de URL.

Com a requisição exibida na aba Proxy -> Intercept, certifique-se de estar na visualização Raw. Esta visualização mostra o texto puro da requisição, facilitando a edição direta.

Localize a primeira linha da requisição:

GET /search?q=books HTTP/1.1

A parte q=books é um parâmetro de URL. A aplicação do lado do servidor usa o valor de q (que atualmente é books) para gerar sua resposta.

Agora, edite este valor diretamente na área de texto. Clique na visualização Raw e altere books para dvds.

A primeira linha modificada agora deve parecer com isto:

GET /search?q=dvds HTTP/1.1

Você alterou com sucesso os dados da requisição em trânsito. O navegador não está ciente desta mudança; ele ainda pensa que solicitou a página com q=books. O servidor ainda não recebeu nenhuma requisição.

Encaminhar a Requisição Modificada

Nesta etapa, você liberará a requisição modificada do Burp Proxy e permitirá que ela continue para o servidor web.

Após editar a requisição na aba Intercept, você precisa decidir o que fazer com ela. Você tem três opções principais através dos botões na parte superior da visualização:

  • Forward: Envia a requisição (em seu estado atual, possivelmente modificado) para o servidor.
  • Drop: Descarta a requisição completamente. O navegador eventualmente atingirá o tempo limite.
  • Action: Fornece um menu de outras ações, como enviar a requisição para outras ferramentas do Burp.

Para enviar sua requisição modificada ao servidor, clique no botão Forward.

Após encaminhar a requisição, o Burp exibirá a resposta do servidor na mesma aba. Você pode encaminhar esta resposta de volta para o navegador clicando em Forward novamente.

Para evitar interceptar requisições subsequentes (como para um favicon), é uma boa prática desativar a interceptação após terminar com a requisição que lhe interessa. Clique no botão "Intercept is on" para alterná-lo de volta para "Intercept is off". Isso permite que todo o outro tráfego flua livremente.

Observar a Resposta do Servidor à Requisição Modificada

Nesta etapa, você observará o resultado da sua ação tanto no navegador quanto no histórico do Burp Suite. Isso confirma que o servidor processou os dados modificados.

Primeiro, volte para o seu navegador web. A página, que estava anteriormente travada no carregamento, agora deve estar totalmente carregada. Observe o conteúdo exibido na página. Deve ler:

You searched for: dvds

Isso confirma que o servidor recebeu e processou o valor do parâmetro modificado (dvds), e não o original (books). Você enganou com sucesso o servidor para exibir um conteúdo diferente.

Em seguida, volte para o Burp Suite para uma visualização mais detalhada. Clique na aba Proxy e, em seguida, na sub-aba HTTP history. Esta aba registra todas as requisições e respostas que passaram pelo proxy. Você deverá ver uma entrada para GET /search?q=dvds. Clique nela para ver a requisição completa que você enviou e a resposta correspondente que o servidor retornou, fornecendo um registro completo da interação.

Este simples exercício demonstra um conceito poderoso: nunca confie em dados vindos do lado do cliente, pois eles podem ser facilmente manipulados por um atacante usando uma ferramenta de proxy como o Burp Suite.

Resumo

Neste laboratório, você aprendeu a habilidade essencial de modificar uma requisição HTTP em tempo real usando o Burp Proxy.

Você com sucesso:

  • Ativou o modo de interceptação no Burp Proxy.
  • Capturou uma requisição HTTP ao vivo de um navegador.
  • Modificou um parâmetro de URL na visualização da requisição bruta.
  • Encaminhou a requisição adulterada para o servidor web.
  • Observou que a resposta do servidor foi baseada nos seus dados modificados.

Esta técnica é um bloco de construção fundamental para testes de segurança de aplicações web, permitindo que você investigue uma ampla variedade de vulnerabilidades manipulando as comunicações cliente-servidor.