
// ferramenta · tokens
JWT / JOSE Attack Lab
Roda 100% no seu navegador · nenhuma chave ou token sai da máquina
Ataques
Para uso em testes autorizados, pesquisa e educação. Não teste tokens/sistemas sem permissão explícita.
// referência
O que é JWT e JOSE
Um JWT (JSON Web Token) carrega claims em três partes (header, payload e assinatura) codificadas em base64url e separadas por ponto. Vale lembrar que um JWT típico não é criptografado, só assinado (um JWS): qualquer pessoa decodifica e lê o header e o payload, e a assinatura garante apenas integridade e autenticidade.
JOSE (JSON Object Signing and Encryption) é a família de specs que padroniza tudo isso: JWS (assinatura), JWE (criptografia), JWA (algoritmos) e JWK (chaves). A maioria das falhas de JWT nasce de confiar em campos que o próprio atacante controla, começando pelo header alg.
Os vetores de ataque clássicos
alg: none
Remove a assinatura (alg none/None/NONE/nOnE). Funciona contra libs que não rejeitam o algoritmo none.
Confusão RS256 → HS256
Usa a chave PÚBLICA RSA (cole no campo de chave pública) como segredo HMAC: a lib verifica HS256 com a pública, que é conhecida.
kid → /dev/null
kid aponta para um arquivo vazio: a chave de verificação vira vazia, então assinamos HS256 com chave nula.
kid SQLi
Injeta SQL no kid para forçar o backend a retornar uma chave conhecida/controlada na consulta de chaves.
jwk injection
Gera um par no navegador, embute a pública no header jwk e auto-assina: libs que confiam no jwk embutido aceitam.
jku injection
Aponta o header jku para uma URL sua; hospede o JWKS gerado abaixo e a lib busca a sua chave.
Perguntas frequentes
O que é o ataque alg:none em JWT?
É quando o token declara alg: none (ou variações como None/NONE) e a biblioteca aceita o JWT sem verificar a assinatura. Se o backend não rejeitar o algoritmo none, dá para forjar qualquer payload.
Como funciona a confusão de algoritmo RS256 → HS256?
O servidor espera RS256 (assinatura assimétrica), mas a biblioteca aceita HS256. O atacante assina o token em HS256 usando a chave pública RSA — que é conhecida — como segredo HMAC, e a verificação passa.
Dá para usar sem o Burp Suite?
Sim. O JWT Attack Lab roda 100% no navegador com WebCrypto: você decodifica, edita, re-assina e dispara os ataques clássicos sem instalar nada nem usar proxy.
O que é jwk e jku injection?
São ataques que apontam a verificação para uma chave controlada pelo atacante: jwk embute a chave pública no próprio header; jku aponta para uma URL com um JWKS hospedado por você. Libs que confiam nesses campos aceitam o token auto-assinado.
Os tokens ou chaves são enviados para algum servidor?
Não. Tudo acontece localmente no navegador via WebCrypto — nenhum token, segredo ou chave sai da sua máquina.

Precisa ir além das ferramentas?
Oferecemos uma estrutura completa de segurança ofensiva white-label com Pentest, Scan e Engenharia Social, executados sob a sua marca e com suporte de especialistas.
Contrate a Intruder