Introdução

O objetivo dessa postagem é introduzir o leitor às principais funcionalidades do Burp Suite.

O Que é o Burp Suite?

Em termos simples, o Burp Suite é um software projetado para testes de segurança em aplicativos web.

Principais Funcionalidades:

Proxy

O proxy intercepta as requisições e respostas entre o navegador (cliente) e o servidor, permitindo aos usuários analisar e manipular o tráfego. Isso é fundamental para identificar e corrigir possíveis falhas de segurança.

Repeater

Os usuários podem ajustar manualmente os parâmetros das requisições para analisar como o aplicativo responde a diferentes inputs.

Analisar Respostas: O Repeater exibe de forma as respostas do servidor, facilitando a análise detalhada do comportamento do aplicativo.

Intruder

Ataques de Força Bruta: Essa ferramenta é valiosa para realizar ataques de força bruta, onde é possível automatizar tentativas de quebra de senhas ou descoberta de parâmetros sensíveis.

Injeções de Dicionário: Os usuários podem realizar ataques com base em listas de palavras (dicionários), testando diferentes combinações para encontrar vulnerabilidades.

Testes Práticos

Neste tópico vamos exemplificar o uso das ferramentas (proxy/repeater/intruder) do Burp nos laboratórios do PortSwigger.

Intruder

Para Enumeração de usuários Prodemos utilizar o intruder para brutar os possíveis usuários.

Neste exemplo, usaremos o laboratório Enumeração de Usuários

Objetivo: Realizar enumeração de nomes de utilizador e, posteriormente, fazermos um ataque força bruta nas possíveis senhas.

  1. Abra o browser do burp para interceptar as requisições Figura 1

  2. Acesse a página de login do laboratório pelo browser do Burp, no meu caso o link é https://0a8b000a03abb31f858b8c7a007b003b.web-security-academy.net/login

  3. Marque a opção Intercept is on, preencha os campos de login/senha e clique em Log in Figura 2

Com isso, teremos a resposta no burp: Figura 3

Clique com o botão direito na requisição e marque a opção Send to Intruder, ou apenas use o atalho ctrl+i

  1. No menu Intruder, selecione o parâmetro do usuário, no meu caso, jhayson. Após isso, marque a opção add Figura 4 obs: Certifique-se que a opção Attack Type esteja com a opção Sniper, posteriormente falaremos sobre os diferentes tipos de ataque.

Acesse o menu payload, nele vamos escolher a wordlist com os nomes de usuários que usaremos para realizar o brute force

  1. Em payload settings [Simple list] clique na opção Load... e escolha o arquivo com os possíveis nomes de usuários Figura 5

  2. Clique na opção Start attack

Ao termino de todas as requisições, vamos analisar as respostas da aplicação para uma das requisições feitas. para isso, clique na requisição e marque as opções Response e Render Figura 6

Com isso, descobrimos que a aplicação retorna o erro Invalid username. Podemos checar se a aplicação retorna esse mesmo erro para todos os usuários tentados, para isso vamos configurar o grep para as respostas.

  1. Clique na opção settings e vá até o menu Grep - Match, após isso preencha os campos de acordo com a imagem abaixo. Figura 7 obs: escreva exatamente o que a mensagem de erro retornou Invalid username

  2. Volte ao menu results para reavaliar as respostas Figura 8

Com isso, podemos notar que, ao tentar o usuário adm a aplicação retornou o erro Incorrect password, indicando que o usuário existe.

Para o terminar do laboratório, basta seguir o passo 4, mas, ao invés de marcar o parâmetro de usuário, devemos selecionar o parâmetro senha. obs: não podemos esquecer de desmarcar o parametro username jhayson, previamente marcado pois isso geraria o brute-force simultaneo de dois parametros, mas sabendo que o usuário adm existe, vamos brutar a senha dessa usuário.

Figura 9

Tipos de Ataque

No passo 4 da enumeração de usuários, definimos o campo Attack Type como sniper, agora veremos os tipos de ataque e suas principais diferenças.

Cluster bomb:

Este tipo de ataque realiza todas as combinações possíveis. Com N(emails) * N(senhas), temos n² iterações. Neste caso, é necessário escolher as duas listas de palavras que serão usadas no payload.

Exemplo de cluster bomb:

1
{"email": "admin","password": "senha1"} {"email": "admin","password": "senha2"} {"email": "admin","password": "senha3"} {"email": "user","password": "senha1"} {"email": "user","password": "senha2"} {"email": "user","password": "senha3"} {"email": "carlos","password": "senha1"} {"email": "carlos","password": "senha2"} {"email": "carlos","password": "senha3"}

Pitchfork:

Este tipo de ataque utiliza diferentes tipos de listas de palavras para realizar força bruta nos parâmetros. Pode ser usado para realizar força bruta em diferentes IPs nas requisições.

Exemplo de pitchfork:

1
2
3
{"email": "admin","password": "senha1"} 
{"email": "user","password": "senha2"}
{"email": "carlos","password": "senha3"}`

Exemplo de requisição pitchfork: O importante é X-Forwarded-For: IP

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
POST /login HTTP/2
Host: 0aad00ee03a734ca821ca6ef00c0006d.web-security-academy.net
Cookie: session=ggLP46abcbQLW56T80NMqSBRbcxx8ico
X-Forwarded-For: 213.41.0.§123§
Content-Length: 30
Cache-Control: max-age=0
Sec-Ch-Ua: "Not_A Brand";v="8", "Chromium";v="120"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Linux"
Upgrade-Insecure-Requests: 1
Origin: https://0aad00ee03a734ca821ca6ef00c0006d.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.71 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://0aad00ee03a734ca821ca6ef00c0006d.web-security-academy.net/login
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Priority: u=0, i

username=carlos&password=§peter§

obs: Na requisição acima, além de realizarmos o bruteforce do campo password, enviamos as requisições por diferentes endereços IP’s (não existe critério na escolha do ip inicial). Vale destacar que na requisição original não tinhamos a linha X-Forwarded-For: 213.41.0.§123§, adicionamos manualmente.

Para praticar o pitchfork, podemos usar o laboratório Username enumeration via response timing

Sniper:

Este tipo de bruteforce usa uma posição da wordlist a cada requisição.

Referências