Gerar um PoC de CSRF no Burp Suite

Beginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá uma técnica fundamental em testes de segurança de aplicações web: a geração de um Proof of Concept (PoC) de Cross-Site Request Forgery (CSRF) usando o Burp Suite. CSRF é um tipo de ataque que engana uma vítima para que ela envie uma requisição maliciosa. O Burp Suite oferece um recurso poderoso para criar automaticamente um PoC, que pode ser usado para demonstrar o impacto da vulnerabilidade.

Você usará o proxy do Burp Suite para interceptar uma requisição que altera o estado da aplicação (como atualizar um endereço de e-mail) e, em seguida, usará suas "Engagement tools" para gerar um formulário HTML que reproduz essa requisição. Este exercício prático solidificará sua compreensão de como os ataques CSRF são elaborados e testados.

Encontrar uma Requisição que Altera o Estado (ex: atualizar e-mail) no Histórico do Proxy

Nesta etapa, você iniciará o Burp Suite, usará seu navegador integrado para realizar uma ação em um site alvo e, em seguida, localizará a requisição correspondente no histórico do proxy. Uma "requisição que altera o estado" é qualquer requisição que modifica dados no servidor, como alterar uma senha, enviar um comentário ou atualizar informações de perfil.

Primeiro, vamos iniciar o Burp Suite.

  1. Clique no menu Applications no canto superior esquerdo da tela.
  2. Vá para Web e selecione Burp Suite Community Edition.
  3. Uma caixa de diálogo aparecerá. Mantenha as configurações padrão (Temporary project) e clique em Next.
  4. Na próxima tela, selecione Use Burp defaults e clique em Start Burp.

Assim que o Burp Suite estiver em execução, abra seu navegador integrado.

  1. Vá para a aba Proxy e, em seguida, para a sub-aba Intercept.
  2. Clique no botão Open Browser. Uma nova janela do navegador Chromium será aberta, pré-configurada para rotear o tráfego através do Burp Suite.

Agora, vamos realizar uma ação para capturar. Para este laboratório, usaremos um site de teste da PortSwigger.

  1. No navegador do Burp, navegue até o seguinte URL:
    https://portswigger.net/web-security/csrf/lab-no-defenses
  2. Clique em Access the lab. Você será redirecionado para um site de blog.
  3. Faça login na aplicação usando as credenciais wiener:peter. Você pode encontrar essas credenciais na descrição do laboratório na página.
  4. Após o login, você verá um formulário "Update email". Insira um novo endereço de e-mail, por exemplo, test@example.com, e clique em Update email.

Finalmente, vamos encontrar a requisição no Burp Suite.

  1. Volte para a janela do Burp Suite.
  2. Navegue até a aba Proxy e depois para a sub-aba HTTP history.
  3. Procure na lista de requisições. Você deverá ver uma requisição POST /my-account/change-email. Esta é a requisição que altera o estado que queremos direcionar. Clique nela para ver seus detalhes no painel abaixo.
POST /my-account/change-email HTTP/2
Host: your-lab-id.web-security-academy.net
...

email=test%40example.com

Você agora interceptou e identificou com sucesso uma requisição que altera o estado.

Clique com o Botão Direito na Requisição

Nesta etapa, você usará o menu de contexto do Burp Suite para acessar seus recursos avançados. O menu de contexto é uma parte central do fluxo de trabalho do Burp Suite, fornecendo acesso rápido a várias ferramentas que podem ser aplicadas a uma requisição selecionada.

Com a requisição POST /my-account/change-email ainda destacada na aba Proxy > HTTP history, realize a seguinte ação:

  1. Mova o cursor do mouse sobre a linha da requisição selecionada.
  2. Clique com o botão direito na requisição.

Isso abrirá um grande menu de contexto com muitas opções. Este menu é sensível ao contexto, o que significa que as opções disponíveis podem mudar dependendo de onde você clica. Ao clicar com o botão direito em uma requisição, você obtém uma lista de ações que pode realizar nessa requisição específica, como enviá-la para outras ferramentas do Burp, como Repeater, Intruder ou, no nosso caso, o gerador de CSRF PoC.

Reserve um momento para observar as opções disponíveis e se familiarizar com as possibilidades.

Ir para Engagement tools > Generate CSRF PoC

Nesta etapa, você navegará pelo menu de contexto para encontrar e iniciar o gerador de CSRF PoC. Esta ferramenta é categorizada em "Engagement tools" (Ferramentas de Engajamento), que são recursos projetados para auxiliar na demonstração e relatório de vulnerabilidades.

Após clicar com o botão direito na requisição na etapa anterior, o menu de contexto agora está visível. Siga estes passos para gerar o PoC:

  1. No menu de contexto, localize e passe o mouse sobre a opção Engagement tools. Isso revelará um sub-menu.
  2. No sub-menu que aparece, clique em Generate CSRF PoC.

Uma nova janela intitulada "Generate CSRF PoC" será aberta. O Burp Suite analisou automaticamente a requisição POST que você selecionou e gerou uma página HTML simples que, ao ser submetida, repetirá essa mesma requisição. Este é o cerne de um ataque CSRF: enganar o navegador de um usuário para que ele submeta uma requisição a um site onde já está autenticado.

Revisar o Formulário HTML Gerado

Nesta etapa, você examinará o código HTML gerado pelo Burp Suite. Compreender este código é crucial para entender como o ataque CSRF funciona.

Na janela "Generate CSRF PoC", você verá um bloco de código HTML. Ele deve se parecer com o seguinte:

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <script>
      history.pushState("", "", "/");
    </script>
    <form
      action="https://your-lab-id.web-security-academy.net/my-account/change-email"
      method="POST"
    >
      <input type="hidden" name="email" value="test&#64;example&#46;com" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

Vamos analisar os componentes chave deste HTML:

  • <form action="..." method="POST">: Isso define um formulário HTML. O atributo action especifica a URL para onde os dados do formulário serão enviados — neste caso, o mesmo endpoint usado para alterar o endereço de e-mail. O method="POST" corresponde ao método da requisição original.
  • <input type="hidden" name="email" value="...">: Este é um campo de formulário oculto. Ele contém o parâmetro exigido pelo servidor para realizar a ação. Aqui, é o parâmetro email com o valor test@example.com. Como ele está oculto, uma vítima que visitar esta página não o verá.
  • <input type="submit" value="Submit request" />: Isso cria o botão que uma vítima precisaria clicar para acionar o ataque. Em ataques mais avançados, esta submissão pode ser acionada automaticamente usando JavaScript.

Esta página HTML simples é um Proof of Concept (Prova de Conceito) funcional para a vulnerabilidade CSRF.

Usar o Recurso 'Test in browser' para Verificar o PoC

Nesta etapa, você usará o PoC gerado para confirmar a vulnerabilidade CSRF. O Burp Suite facilita isso com um recurso de teste integrado.

Na janela "Generate CSRF PoC", você encontrará um botão rotulado Test in browser. Este recurso permite que você teste o PoC diretamente na mesma sessão do navegador onde você está autenticado no aplicativo alvo.

  1. Clique no botão Test in browser.
  2. O Burp Suite fornecerá uma URL única. Clique no botão Copy para copiar esta URL para a sua área de transferência.
  3. Volte para o navegador integrado do Burp (a janela Chromium).
  4. Cole a URL copiada na barra de endereço e pressione Enter.

Uma nova página será carregada, exibindo apenas um botão "Submit request". Este é o seu PoC em ação.

  1. Clique no botão Submit request.

O navegador enviará a requisição POST para a aplicação web. Como você já está logado (seu navegador possui o cookie de sessão), a aplicação processará a requisição como se você a tivesse feito legitimamente.

Para confirmar que o ataque foi bem-sucedido:

  1. Navegue de volta para a aba com a aplicação de blog.
  2. Atualize a página ou clique no link "My account".
  3. Você deverá ver que o e-mail foi atualizado para test@example.com (ou qualquer valor que estivesse no seu PoC). O laboratório também deverá exibir uma mensagem "Congratulations, you solved the lab!".

Isso confirma que o PoC CSRF funciona e que a aplicação é vulnerável.

Resumo

Neste laboratório, você aprendeu com sucesso como usar o Burp Suite para gerar e testar um Proof of Concept (PoC) de Cross-Site Request Forgery (CSRF).

Você praticou o fluxo de trabalho completo para esta tarefa:

  1. Interceptar uma requisição que altera o estado usando o proxy do Burp.
  2. Usar o menu de contexto para acessar Engagement tools.
  3. Gerar o PoC CSRF com um único clique.
  4. Analisar o HTML resultante para entender o mecanismo do ataque.
  5. Testar o PoC no navegador para confirmar a vulnerabilidade.

Esta habilidade é essencial para qualquer profissional de segurança de aplicações web, pois fornece uma maneira clara e eficaz de demonstrar o impacto real de uma falha CSRF para desenvolvedores e partes interessadas.