Estrutura de um JWT com painéis Header, Payload e Signature em estilo digital futurista

// ferramenta · tokens

JWT / JOSE Attack Lab

Decodifique, edite e re-assine JWTs no navegador e dispare os ataques clássicos de autenticação. As chaves nunca saem da máquina: tudo roda local, com WebCrypto.

Roda 100% no seu navegador · nenhuma chave ou token sai da máquina

Assinatura
Gerar par de chaves:

Ataques

Token forjado

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.

Rede digital abstrata com nós e conexões em laranja e azul sobre fundo escuro

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