
SignSaboteur é uma extensão do Burp Suite para editar, assinar e verificar vários tokens web assinados.
SignSaboteur é uma extensão do Burp Suite para editar, assinar, verificar e atacar tokens assinados. Ele suporta diferentes tipos de tokens: Django TimestampSigner, ItsDangerous Signer, Express cookie-session middleware, OAuth2 Proxy, Tornado’s signed cookies, Ruby Rails Signed cookies, Ruby Rails Encrypted cookies, Nimbus JOSE + JWT e Unknown signed string.
Você pode encontrar mais informações sobre a extensão na página do blog de Pesquisa da Portswigger - Introducing SignSaboteur: forge signed web tokens with ease.
Ele fornece detecção automática e edição inline de tokens em requisições/respostas HTTP e mensagens WebSocket, assinatura de tokens e automação de ataques de força bruta contra implementações de tokens assinados.
Foi inspirado pela extensão JWT Token de Fraser Winterborn e Dolph Flynn. O código fonte original pode ser encontrado aqui e aqui.
./gradlew jarsign-saboteur-1.0.6.jar dentro do diretório build/libsExtensions, sub-aba Installed, clicando em Add e carregando
o arquivo JAR
A Visualização da Lista de Palavras permite importar arquivos de listas de segredos e salts. A extensão possui suas próprias listas de dicionários pré-construídas. A maioria dos segredos é retirada de jwt-secrets. Como opção, Flask-Unsign-Wordlist pode ser usada. A extensão suporta formato de strings JSON para caracteres especiais; para usá-lo, coloque a string secreta entre ".
A Visualização do Editor suporta vários tokens assinados: Django, Dangerous, Flask, Express, OAuth2 e Tornado. Ela permite a modificação dos tokens assinados na visualização de Requisição/Resposta HTTP do Burp Suite nas ferramentas Proxy, History e Repeater.
A aba Dangerous pode ser usada tanto para tokens Flask quanto Django, que são selecionados dependendo se um token Dangerous ou Django é detectado.
A aba Unknown pode ser usada para forçar strings assinadas desconhecidas por força bruta. O modo de adivinhação funciona apenas com ataques de força bruta Balanced e Deep. Ela suporta diferentes técnicas de derivação de mensagens, incluindo:
Um editor de texto JSON é fornecido para editar cada componente que contenha conteúdo JSON:
Um editor de timestamp é fornecido para editar cada componente que contenha timestamp:
Um editor hexadecimal é fornecido para todos os tokens assinados, exceto para assinaturas Express. NOTA A aba Express ainda não suporta atualização automática de assinatura. Por favor, copie manualmente para o cookie de assinatura correspondente.
Assinar apresenta uma caixa de diálogo de assinatura que pode ser usada para atualizar a Assinatura, assinando o token com uma chave da Visualização de Chaves que tenha capacidade de assinatura
Força bruta tentará encontrar a chave secreta usada para a geração da assinatura. Se uma chave secreta for encontrada, uma caixa de diálogo será apresentada.
A opção Força bruta implementa três tipos de ataques contra assinaturas de tokens assinados:
A opção Ataque implementa oito ataques de autorização bem conhecidos contra tokens assinados:
Estes são descritos em mais detalhes abaixo.
Todos esses ataques podem ser usados juntos. Lembre-se de que a extensão não suporta modificação de payload de token no modo Ataque, então seu payload será substituído por um novo.
Formato de token ID OpenID Connect geralmente usado por bibliotecas de assinatura para armazenar informações sobre o usuário autenticado. A extensão gerará um placeholder para o token ID do usuário admin.
Mesmo que o ataque User claims, mas colocará no atributo JSON user.
Outra forma comum de armazenar detalhes do usuário são os atributos JSON username e password. A extensão gerará um placeholder para o usuário admin.
As informações de sessão do usuário autenticado do Flask, se armazenadas no lado do cliente, devem incluir os atributos JSON id, _id, user_id ou _user_id. A extensão gerará sessão para o primeiro usuário, geralmente admin.
O framework Express usa o atributo JSON passport para armazenar detalhes do usuário. A extensão gerará um placeholder para o usuário admin.
Alguns frameworks podem usar o wrapper account para armazenar informações sobre o usuário autenticado. Para exploração, pode ser necessário usar também Authenticated claims.
O Authenticated claims implementa 12 flags de autorização bem conhecidas.
A opção User access_token gera um token ID JWT OpenID Connect assinado com a mesma chave e mesmo algoritmo de hash, sem nenhuma derivação de chave realizada.