Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
jwt_tool — :snake: Um kit de ferramentas para testar, ajustar e quebrar JSON Web Tokens | Kitploit
Ferramentas/GitHubGitHub/ticarpi/jwt_tool
Scanners de VulnerabilidadesSegurança WebFuzzingCriptografiaCTFTestes de Penetração
GitHubticarpi/jwt_tool

jwt_tool

🐍 Um kit de ferramentas para testar, ajustar e quebrar JSON Web Tokens

Ver Repositório
6.7k812há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

O Kit de Ferramentas JSON Web Token v2

jwt_tool.py é um kit de ferramentas para validar, forjar, escanear e adulterar JWTs (JSON Web Tokens).

jwt_tool version python version

logo

Suas funcionalidades incluem:

  • Verificação da validade de um token
  • Teste de exploits conhecidos:
    • (CVE-2015-2951) A vulnerabilidade de bypass de assinatura alg=none
    • (CVE-2016-10555) A vulnerabilidade de incompatibilidade de chave pública RS/HS256
    • (CVE-2018-0114) Vulnerabilidade de injeção de chave
    • (CVE-2019-20933/CVE-2020-28637) Vulnerabilidade de senha em branco
    • (CVE-2020-28042) Vulnerabilidade de assinatura nula
    • (CVE-2022-21449) Vulnerabilidade ECDSA Psychic Signature
  • Varredura de configurações incorretas ou fraquezas conhecidas
  • Fuzzing de valores de claims para provocar comportamentos inesperados
  • Teste da validade de um segredo/arquivo de chave/Chave Pública/chave JWKS
  • Identificação de chaves fracas por meio de um ataque de dicionário de alta velocidade
  • Forjar novos conteúdos de cabeçalho e payload do token e criar uma nova assinatura com a chave ou por meio de outro método de ataque
  • Adulteração de timestamps
  • Geração de chaves RSA e ECDSA, e reconstrução (a partir de arquivos JWKS)
  • Limitação de taxa (rate-limiting) para todos os ataques
  • ...e muito mais!

Público-alvo

Esta ferramenta foi criada para pentesters, que precisam verificar a força dos tokens em uso e sua suscetibilidade a ataques conhecidos. Uma variedade de opções de adulteração, assinatura e verificação está disponível para ajudar a aprofundar as potenciais fraquezas presentes em algumas bibliotecas JWT.
Também tem sido útil para participantes de CTF - já que os CTFs parecem estar interessados em JWTs atualmente.
Também pode ser útil para desenvolvedores que usam JWTs em projetos, mas que desejam testar a estabilidade e vulnerabilidades conhecidas ao usar tokens forjados.


Requisitos

Esta ferramenta foi escrita nativamente em Python 3 (versão 3.6+) usando as bibliotecas comuns; no entanto, várias funções criptográficas (e a estética/legibilidade geral) exigem a instalação de algumas bibliotecas Python comuns.
(Uma versão mais antiga, em Python 2.x, desta ferramenta está disponível no ramo legado para aqueles que precisarem, embora não seja mais suportada ou atualizada)


Instalação

Docker

A utilização preferida do jwt_tool é com a imagem docker oficial do jwt_tool hospedada no Dockerhub.
O comando base para executá-lo é o seguinte:
Comando base para executar o jwt_tool:
docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

Ao usar o comando acima, você pode acrescentar quaisquer outros argumentos normalmente.
Observe que os arquivos locais no seu diretório de trabalho atual serão mapeados para o diretório /tmp do contêiner docker, para que você possa usá-los usando esse caminho absoluto nos seus argumentos.
Ou seja:
/tmp/localfile.txt

Instalação Manual

A instalação é apenas uma questão de baixar o arquivo jwt_tool.py (ou fazer git clone do repositório).
(chmod o arquivo também se quiser adicioná-lo ao seu $PATH e chamá-lo de qualquer lugar.)

$ git clone https://github.com/ticarpi/jwt_tool
$ python3 -m pip install -r requirements.txt

Na primeira execução, a ferramenta gerará um arquivo de configuração, alguns arquivos utilitários, um arquivo de log e um conjunto de chaves Públicas e Privadas em vários formatos.

Configurações Personalizadas

  • Para aproveitar ao máximo as opções de varredura, é fortemente recomendado copiar o arquivo JWKS gerado para algum local que possa ser acessado remotamente via URL. Esse endereço deve então ser armazenado em jwtconf.ini como o valor "jwkloc".
  • Para capturar interações com serviços externos - como consultas DNS e solicitações HTTP - coloque seu endereço exclusivo do Burp Collaborator (ou outras ferramentas alternativas, como RequestBin) no arquivo de configuração como o valor "httplistener".
    Revise as outras opções no arquivo de configuração para personalizar sua experiência.

Bug de cores no Windows

Para corrigir cores quebradas no cmd/Powershell do Windows: descomente as duas linhas abaixo em jwt_tool.py (remova o "# " do início de cada linha).
Você também precisará instalar o colorama: python3 -m pip install colorama

root@kitploit:~
# import colorama
# colorama.init()

Uso

O primeiro argumento deve ser o próprio JWT (a menos que ele seja fornecido em um cabeçalho ou valor de cookie). Não fornecer argumentos adicionais mostrará os valores decodificados do token para revisão.
$ python3 jwt_tool.py <JWT>
ou o comando base do Docker:
$ docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool

O kit de ferramentas validará o token e listará os valores do cabeçalho e do payload.

Argumentos adicionais

Os diversos argumentos adicionais levam você diretamente à função apropriada e retornam um token pronto para uso nos seus testes.
Por exemplo, para adulterar o token existente, execute o seguinte:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -T

Muitas opções precisam de valores adicionais para definir configurações.
Por exemplo, para executar um tipo específico de exploit, você precisa escolher a opção eXploit (-X) e selecionar a vulnerabilidade (aqui usando "a" para o exploit alg:none):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -X a

Parâmetros extras

Algumas opções, como verificar tokens, exigem parâmetros/arquivos adicionais a serem fornecidos (aqui fornecendo a Chave Pública no formato PEM):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -V -pk public.pem

Enviando tokens para um aplicativo web

Todos os modos agora permitem enviar o token diretamente para um aplicativo.
Você precisa especificar:

  • URL de destino (-t)
  • em vez de uma URL de destino, você pode colocar sua solicitação HTTP em um arquivo e referenciar o arquivo com -r. Isso preenche AUTOMATICAMENTE cabeçalhos, cookies e dados POST, portanto esta é a opção recomendada
  • um cabeçalho de solicitação (-rh) ou cookies de solicitação (-rc) que sejam necessários para o aplicativo (pelo menos um deve conter o token)
  • (opcional) quaisquer dados POST (quando a solicitação for um POST)
  • (opcional) quaisquer opções adicionais do jwt_tool, como modos ou opções de adulteração/injeção
  • (opcional) um canary value (-cv) - um valor de texto que você espera ver em um uso bem-sucedido do token (por exemplo, "Welcome, ticarpi")
    Um exemplo de solicitação pode ser assim (usando o modo de varredura para erros forçados):
    $ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -rh "Origin: null" -cv "Welcome" -M er

Várias respostas da solicitação são exibidas:

  • Código de resposta
  • Tamanho da resposta
  • ID único de rastreamento da solicitação (para uso com registro em log)
  • Modo/opções usados

Fluxo de trabalho comum

Aqui está uma rápida visão geral de uma avaliação básica de uma implementação de JWT. Se não houver sucesso com essas opções, então investigue mais a fundo outros modos e opções para procurar novas vulnerabilidades (ou zero-days!).

Reconhecimento:

Leia o valor do token para ter uma noção das claims/valores esperados no aplicativo:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw

Varredura:

Execute um Playbook Scan usando o token fornecido diretamente contra o aplicativo para procurar configurações incorretas comuns:
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -M pb

Exploração:

Se alguma vulnerabilidade bem-sucedida for encontrada, altere quaisquer claims relevantes para tentar explorá-la (aqui usando o exploit Inject JWKS e injetando um novo nome de usuário):
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -X i -I -pc name -pv admin

Fuzzing:

Vá mais fundo testando valores e claims inesperados para identificar comportamentos inesperados do aplicativo, ou execute ataques na lógica de programação ou no processamento de tokens:
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -I -hc kid -hv custom_sqli_vectors.txt

Revisão:

Revise qualquer exploração bem-sucedida consultando os logs para ler mais dados sobre a solicitação e :
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -X i -I -pc name -pv admin


Ajuda

Para obter uma lista de opções, chame a função de uso: Algumas opções, como verificar tokens, exigem parâmetros/arquivos adicionais a serem fornecidos:
$ python3 jwt_tool.py -h

Um guia do usuário mais detalhado pode ser encontrado na página wiki.


JWT Attack Playbook - novo conteúdo do wiki!

playbook_logo

Vá até o JWT Attack Playbook para um passo a passo detalhado do que são JWTs, o que eles fazem e um fluxo de trabalho completo de como testá-los minuciosamente em busca de vulnerabilidades, fraquezas comuns e erros de codificação não intencionais.


Dicas

Regex para encontrar JWTs na busca do Burp
(certifique-se de que as opções 'Case sensitive' e 'Regex' estejam marcadas)
[= ]eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9._-]* - versão url-safe do JWT
[= ]eyJ[A-Za-z0-9_\/+-]*\.[A-Za-z0-9._\/+-]* - todas as versões de JWT (maior possibilidade de falsos positivos)


Leitura adicional

  • JWT Attack Playbook (https://github.com/ticarpi/jwt_tool/wiki) - para uma metodologia completa de teste de JWT

  • Uma ótima introdução aos JWTs - https://jwt.io/introduction/

  • Grande parte da inspiração inicial para esta ferramenta vem das vulnerabilidades descobertas por Tim McLean.
    Confira o blog dele sobre fraquezas de JWT aqui: https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/

  • Um monte de exercícios para testar vulnerabilidades de JWT são fornecidos pela Pentesterlab (https://www.pentesterlab.com). Eu recomendo fortemente uma assinatura PRO se você estiver interessado em Pentest de Aplicações Web.

    OBSERVAÇÃO: Este kit de ferramentas resolverá a maioria dos exercícios de JWT da Pentesterlab em poucos segundos quando usado corretamente; no entanto, eu o incentivo fortemente a trabalhar nesses exercícios por conta própria, descobrindo a estrutura e as fraquezas. Afinal, tudo se resume a aprender...

Baixar ferramenta