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.
Abra o browser do burp para interceptar as requisições
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
Marque a opção
Intercept is on
, preencha os campos de login/senha e clique emLog in
Com isso, teremos a resposta no burp:
Clique com o botão direito na requisição e marque a opção Send to Intruder
, ou apenas use o atalho ctrl+i
- No menu
Intruder
, selecione o parâmetro do usuário, no meu caso, jhayson. Após isso, marque a opçãoadd
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
Em
payload settings [Simple list]
clique na opçãoLoad...
e escolha o arquivo com os possíveis nomes de usuáriosClique 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
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.
Clique na opção
settings
e vá até o menuGrep - Match
, após isso preencha os campos de acordo com a imagem abaixo.obs: escreva exatamente o que a mensagem de erro retornou
Invalid username
Volte ao menu results para reavaliar as respostas
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.
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:
|
|
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:
|
|
Exemplo de requisição pitchfork:
O importante é X-Forwarded-For: IP
|
|
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
Portswigger: https://portswigger.net/burp/documentation/desktop/getting-started
Repeater: https://portswigger.net/burp/documentation/desktop/tools/repeater
Intruder: https://portswigger.net/burp/documentation/desktop/tools/intruder
Attack types: https://portswigger.net/burp/documentation/desktop/tools/intruder/configure-attack/attack-types