
Extensão do Burp para testar problemas de autorização. Repetição automatizada de requisições e extração de valores de parâmetros em tempo real.
A extensão do Burp ajuda a encontrar falhas de autorização. Basta navegar pela aplicação web com um usuário de altos privilégios e deixar o Auth Analyzer repetir suas requisições para qualquer usuário não privilegiado definido. Com a possibilidade de definir Parâmetros, o Auth Analyzer é capaz de extrair e substituir automaticamente valores de parâmetros. Com isso, por exemplo, tokens CSRF ou até mesmo características completas de sessão podem ser extraídos automaticamente de respostas e substituídos em requisições posteriores. Cada resposta será analisada e marcada com seu status de bypass.
Existem outras extensões existentes do Burp que fazem basicamente coisas semelhantes. No entanto, a força da funcionalidade de parâmetros e extração automática de valores é a principal razão para escolher o Auth Analyzer. Com isso, você não precisa conhecer o conteúdo dos dados que precisam ser trocados. Você pode facilmente definir seus parâmetros e cookies e o Auth Analyzer capturará em tempo real os valores necessários. O Auth Analyzer não realiza nenhuma requisição de pré-voo. Ele basicamente faz exatamente o mesmo que sua aplicação web, com os papéis/sessões de usuário definidos por você.
(1) Crie ou Clone uma Sessão para cada usuário que deseja testar.
(2) Salve e carregue a configuração da sessão
(3) Especifique as características da sessão (Cabeçalho(s) e/ou Parâmetro(s) a serem substituídos)
(4) Defina Filtros se necessário
(5) Iniciar / Parar e Pausar o Auth Analyzer
(6) Especifique o filtro da tabela
(7) Navegue pela Aplicação Web com outro usuário e acompanhe os resultados das requisições repetidas
(8) Exporte os dados da tabela para XML ou HTML
(9) Analise manualmente as requisições / respostas originais e repetidas

Se você tiver os recursos que deseja testar em seu sitemap, é muito fácil e rápido realizar seus testes de autorização. No primeiro passo, defina as sessões que deseja testar. Em seguida, expanda seu sitemap, selecione os recursos e repita as requisições através do menu de contexto. Além disso, você pode definir algumas opções de quais requisições devem ser repetidas e quais não. Com isso, você pode realizar testes de autorização de um site complexo em segundos.
O Auth Analyzer tem a possibilidade de definir parâmetros que são substituídos antes que a requisição para a sessão dada seja repetida. O valor do parâmetro pode ser definido de acordo com diferentes requisitos.
O valor do parâmetro será extraído se ocorrer em uma resposta com uma das seguintes condições:
Uma resposta com um Cabeçalho Set-Cookie com um nome de Cookie definido como o Nome do Campo de Extração
Uma Resposta de Documento HTML contém um campo de entrada com o atributo name definido como o Nome do Campo de Extração
Uma Resposta JSON contém uma chave definida como o Nome do Campo de Extração
Por padrão, o Auth Analyzer tenta extrair automaticamente o valor do parâmetro de todas as localizações. No entanto, clicando no ícone de configurações do parâmetro, você pode restringir a localização de extração automática conforme necessário.

O parâmetro será extraído se a resposta contiver a String Inicial e a String Final especificadas em uma linha. A String De-Para pode ser definida manualmente ou diretamente pelo menu de contexto correspondente. Basta marcar a palavra que deseja extrair em qualquer resposta e definir como De-Para Extrair para o parâmetro desejado.
Por padrão, o Auth Analyzer tenta extrair o valor do cabeçalho e do corpo na maioria das respostas textuais. No entanto, clicando no ícone de configurações do parâmetro, você pode restringir a localização de extração De-Para conforme necessário.

Um valor de parâmetro estático pode ser definido. Isso pode ser usado, por exemplo, para tokens CSRF estáticos ou credenciais de login.
Você será solicitado a fornecer uma entrada se o parâmetro definido estiver presente em uma requisição. Isso pode ser usado, por exemplo, para definir códigos 2FA.
Se um valor for definido (extraído ou definido pelo usuário), ele será substituído se o parâmetro correspondente estiver presente em uma requisição. As condições para substituição de parâmetros são:
O parâmetro será substituído se estiver presente em um dos seguintes locais:

No Caminho (ex.: /api/user/99/profile --> se um parâmetro chamado user estiver presente, o valor 99 será substituído)
Parâmetro de URL (ex.: email=hans.wurst[a]gmail.com)
Parâmetro de Cookie (ex.: PHPSESSID=mb8rkrcdg8765dt91vpum4u21v)
Parâmetro do Corpo seja Codificado por URL ou Dados de Formulário Multipart
Parâmetro JSON (ex.: {"email":"hans.wurst[a]gmail.com"})
Por padrão, o valor do parâmetro será substituído em cada localização. No entanto, clicando no ícone de configurações do parâmetro, você pode restringir a localização conforme necessário.

O parâmetro definido pode ser removido completamente, por exemplo, para testar mecanismos de verificação CSRF.
Defina o nome de usuário e senha como um valor estático. O nome do cookie de sessão deve ser definido como extração automática. Verifique se você começa a navegar pela aplicação sem nenhum cookie de sessão definido. Faça login na aplicação web. O Auth Analyzer repetirá a requisição de login com os parâmetros estáticos e obterá automaticamente a sessão pelo cabeçalho Set-Cookie. Este Cookie será usado para requisições posteriores da sessão dada. O Cookie definido será tratado como um parâmetro e, portanto, nenhum Cabeçalho de Cookie precisa ser definido.

Dica: Você pode restringir as condições de extração e substituição de um parâmetro para evitar mau funcionamento na etapa de extração/substituição.

Defina um cabeçalho de Cookie e um token CSRF (com extração automática de valor). O valor do token CSRF será extraído se estiver presente em uma Tag de Entrada HTML, um Cabeçalho Set-Cookie ou uma Resposta JSON da sessão dada.

Como o método Extração Automática funciona apenas em Campos de Entrada HTML, Objetos JSON ou Cabeçalhos Set-Cookie, devemos usar o método de extração genérico chamado De String para String. Com este método de extração, podemos extrair qualquer valor de uma resposta se ele estiver localizado entre uma string inicial e final única. O Auth Analyzer fornece um método de menu de contexto para definir a String Inicial e a String Final automaticamente. Basta marcar a String que deseja extrair e definir como De-Para Extrair pelo menu de contexto.

Como o Cabeçalho de Autorização não é tratado como um parâmetro (como é feito com o Cabeçalho de Cookie), podemos usar um ponto de inserção de cabeçalho para alcançar o que queremos. Basta marcar e clicar com o botão direito no valor que deseja substituir no cabeçalho especificado. O valor padrão será usado se nenhum valor de parâmetro tiver sido extraído ainda.

Basta criar quantas sessões desejar para testar vários papéis ao mesmo tempo.

Pressione Renovar no painel de status da sessão ou repita a requisição afetada pelo menu de contexto (clique com o botão direito do mouse na entrada da tabela). Dica: As requisições de login podem ser marcadas e filtradas posteriormente.

Requisições originais podem ser descartadas para testar operações idempotentes (ex.: uma função DELETE).

Se um usuário anônimo precisar de uma característica válida (ex.: um valor de cookie válido), você deve definir o cabeçalho como de costume. Caso contrário, você pode definir um cabeçalho para remover da seguinte forma:

Você pode facilmente testar um grande número de endpoints em suas configurações individuais de CORS adicionando um cabeçalho Origin em Cabeçalho(s) a substituir e selecionando Testar CORS no Painel de Sessão. Ao selecionar Testar CORS, o Auth Analyzer mudará o método HTTP para OPTIONS antes que a requisição seja repetida.

Um parâmetro específico pode ser removido selecionando a Caixa de Remoção. Isso pode ser usado, por exemplo, para testar o mecanismo de verificação CSRF.

O Auth Analyzer fornece uma visualização de comparação embutida para verificar as diferenças entre duas respostas. Basta marcar a mensagem que deseja analisar e alterar a visualização da mensagem (1). Agora você pode comparar as duas requisições (2) (3). A funcionalidade Diff embutida calculará e mostrará as diferenças entre as duas requisições em tempo real (4).

Visualização expandida do Diff:

O Auth Analyzer deve processar dois tipos de requisições / respostas:
A resposta contém um valor que deve ser extraído
O recurso solicitado não deve ser acessível pela(s) sessão(ões) definida(s)
Por exemplo, não queremos processar um arquivo JavaScript estático porque ele é acessível a todos e (esperançosamente) não contém dados protegidos. Para conseguir isso, podemos definir os seguintes tipos de filtros:
Ambas as Respostas tiverem o mesmo Corpo de Resposta e mesmo Código de RespostaAmbas as Respostas tiverem o mesmo Código de Resposta e Ambas as Respostas tiverem +-5% do comprimento do corpo da resposta