// ferramenta · tokens
JWT / JOSE Attack Lab
Decodifique, edite e re-assine JWTs no seu navegador e dispare os ataques clássicos de autenticação. As chaves nunca saem da máquina — tudo roda com WebCrypto, local.
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. O detalhe que mais confunde: um JWT típico não é criptografado, é apenas assinado (um JWS). Qualquer pessoa decodifica e lê o header e o payload; a assinatura só garante integridade e autenticidade.
JOSE (JSON Object Signing and Encryption) é a família de specs que padroniza isso: JWS (assinatura), JWE (criptografia), JWA (algoritmos) e JWK (chaves). A maioria das falhas de JWT vem de confiar em campos que o próprio atacante controla — a começar 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.
Seus tokens resistem a isso?
A IntruderLabs executa o pentest que encontra e prova falhas de autenticação antes de um atacante — sob a sua marca, com relatório white-label.
Fale com a gente →