JSON Web Tokens (JWT)

Entendendo e analisando autenticação web

Autenticação Web Análise de Segurança Habilidades Práticas

O que você vai descobrir

🎯 Por que isso importa

Os JSON Web Tokens alimentam os sistemas de login de milhões de sites e aplicativos que você usa diariamente. Entender como eles funcionam - e onde podem falhar - é conhecimento essencial para qualquer pessoa séria sobre cibersegurança. Você aprenderá a identificar vulnerabilidades que até desenvolvedores experientes deixam passar.

🔍 O que você vai aprender

Ao final deste capítulo, você entenderá exatamente como a autenticação web funciona nos bastidores. Você será capaz de analisar qualquer token JWT, identificar fraquezas de segurança e conhecer as técnicas profissionais que os especialistas em segurança usam para testar esses sistemas.

🚀 Sua primeira vitória

Nos próximos 5 minutos, você decodificará seu primeiro token JWT e entenderá sua estrutura. Esta mesma técnica é usada por profissionais de segurança em todo o mundo. O banco de dados CVE.org mostra o quão críticas essas habilidades são na segurança do mundo real.

🔧 Tente agora

Aqui está um token JWT real de uma aplicação web. Vamos decodificá-lo juntos para ver o que tem dentro:

# Copie este token - ele vem de uma aplicação de teste
TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"

# Decodifique a primeira parte (o header) - adicione padding para base64url
echo "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9===" | base64 -d

# Decodifique a segunda parte (os dados) - adicione padding para base64url
echo "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ===" | base64 -d

Você verá: O token contém informações legíveis sobre um usuário chamado "John Doe" - é assim que as aplicações web sabem quem você é quando está logado!

Habilidades que você vai dominar

✅ Compreensão fundamental

  • Como a autenticação web realmente funciona (chega de mistério!)
  • Ler e entender tokens JWT como um profissional
  • Identificar a diferença entre sistemas seguros e vulneráveis
  • Usar as mesmas ferramentas que os especialistas em segurança utilizam

🔍 Habilidades profissionais

  • Analisar sistemas de autenticação em busca de fraquezas
  • Testar aplicações web como um consultor de segurança
  • Entender métodos de ataque para construir melhores defesas
  • Comunicar descobertas de segurança de forma clara e profissional

Entendendo a estrutura JWT

Pense em um token JWT como uma carteira de identidade digital. Assim como sua CNH tem diferentes seções (foto, nome, endereço), um JWT tem três partes distintas que trabalham juntas para provar quem você é para um site.

Todo JWT segue este padrão: header.payload.signature

Três seções separadas por pontos - cada uma tem uma função específica

Header: a seção "Tipo"

Isso informa ao site que tipo de token ele está olhando e como verificar se é genuíno - como o texto "Carteira de Habilitação" na sua CNH.

O que contém

  • alg : Qual método de segurança é usado
  • typ : Confirma que é um token JWT
  • kid : Qual chave de segurança usar (opcional)
{
  "alg": "HS256",
  "typ": "JWT",
  "kid": "2024-key-01"
}

Payload: a seção "Info"

Isso contém as informações reais sobre o usuário - como o nome, foto e endereço na sua CNH.

Tipos de informação

  • Padrão: ID do usuário, tempo de expiração, quem emitiu
  • Público: Tipos de informação amplamente reconhecidos
  • Personalizado: Dados específicos da aplicação como roles de usuário
{
  "sub": "user_001",
  "iss": "auth.company.com",
  "exp": 1643723400,
  "roles": ["analyst"]
}

Signature: a seção "Segurança"

Isso é como a faixa holográfica na sua CNH - prova que o token é autêntico e não foi adulterado.

Como funciona

  • Integridade: Detecta se alguém alterou os dados
  • Autenticidade: Prova que veio da fonte correta
  • Algoritmo: Usa criptografia HMAC, RSA ou ECDSA
HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret_key
)

Seu caminho de aprendizado

Profissionais de segurança usam uma abordagem sistemática para analisar sistemas de autenticação. Aqui está o método comprovado que você vai dominar, dividido em etapas claras:

Etapa 1: análise manual (comece aqui)

Primeiro, você aprenderá a examinar tokens manualmente. Isso constrói seu entendimento e ajuda a reconhecer padrões que ferramentas automatizadas podem perder.

# Pegue qualquer token JWT e decomponha-o
TOKEN="seu_token_jwt_aqui"

# Extraia cada seção (elas são separadas por pontos) - adicione padding para base64url
echo "$(echo "$TOKEN" | cut -d'.' -f1)===" | base64 -d | jq .
echo "$(echo "$TOKEN" | cut -d'.' -f2)===" | base64 -d | jq .

# Veja a assinatura (esta permanece criptografada)
echo "$TOKEN" | cut -d'.' -f3

O que você vai descobrir: A maior parte do token é legível! Apenas a assinatura é criptografada. Isso é por design - a segurança vem da assinatura, não de esconder os dados.

Etapa 2: usando ferramentas profissionais

Uma vez que você entenda o básico, usará as mesmas ferramentas web que os profissionais de segurança utilizam para análise rápida.

Dica Pro: Visite https://jwt.io/ e cole qualquer token JWT. Você verá instantaneamente todas as três seções decodificadas, mais a verificação se a assinatura é válida. Favorite isso - você vai usar constantemente!

Etapa 3: testes de segurança avançados

Finalmente, você aprenderá a usar ferramentas de segurança especializadas que podem testar automaticamente vulnerabilidades comuns e padrões de ataque.

# Obtenha a ferramenta de teste JWT padrão da indústria
git clone https://github.com/ticarpi/jwt_tool.git
cd jwt_tool

# Analise a estrutura e segurança do token
python3 jwt_tool.py $TOKEN           # Análise básica e decodificação
python3 jwt_tool.py $TOKEN -C -d wordlist.txt  # Teste para chaves fracas
python3 jwt_tool.py $TOKEN -X a      # Tente ataques de confusão de algoritmo

O que isso faz: Esses comandos testam automaticamente as vulnerabilidades JWT mais comuns. É como ter um especialista em segurança verificando o token para você!

Ferramentas essenciais que você vai usar

Profissionais de segurança não memorizam tudo - eles sabem quais ferramentas usar e quando. Aqui estão as ferramentas JWT essenciais que você deve conhecer:

Ferramentas de análise rápida

JWT.io (essencial)

Decodificação e validação instantânea de tokens. Perfeito para entender o que tem dentro de qualquer token JWT. Gratuito e funciona no seu navegador.

Token.dev (avançado)

Análise mais detalhada com pontuação de segurança e detecção de vulnerabilidades. Ótimo para investigação mais profunda.

Ferramentas de teste profissional

JWT_Tool (padrão da indústria)

A ferramenta que consultores de segurança usam para testes JWT abrangentes. Encontra vulnerabilidades automaticamente.

Hashcat (padrão da indústria)

A ferramenta de quebra de senhas mais usada com excelentes capacidades de quebra de segredos JWT. O que profissionais de segurança realmente usam para testar chaves JWT fracas.

💡 Estratégia Pro: Comece com JWT.io para cada token, depois use JWT_Tool quando encontrar algo interessante!

Construindo sistemas seguros

Entender ataques te torna melhor em defesa. Aqui está o que você precisa saber para construir e reconhecer implementações JWT seguras:

Essenciais de segurança

  • Use segredos fortes, gerados aleatoriamente (nunca use "secret" ou "password"!)
  • Sempre verifique se o algoritmo corresponde ao que você espera
  • Defina tempos de expiração razoáveis (geralmente 15 minutos a 1 hora)
  • Valide cada dado no token
  • Sempre use HTTPS - nunca envie tokens por HTTP simples

Erros comuns a evitar

  • Nunca aceite o algoritmo "none" (isso desabilita a segurança completamente)
  • Não deixe atacantes mudarem o tipo de algoritmo
  • Use RSA/ECDSA para sistemas públicos, não apenas HMAC
  • Implemente revogação de token apropriada (lista negra)
  • Monitore padrões de tokens incomuns e falhas de verificação

🎯 Sua expertise em JWT está completa!

Você agora entende autenticação web como um profissional de segurança. Você pode analisar qualquer token JWT, identificar vulnerabilidades e sabe como construir sistemas seguros.

Análise de Token Teste de Segurança Implementação Segura Ferramentas Profissionais

Pronto para aplicar suas habilidades em cenários do mundo real

Validação de Conhecimento

Demonstre sua compreensão para ganhar pontos e progredir

1
Pergunta do Capítulo

Decodifique este payload JWT para encontrar o nome de usuário: eyJzdWIiOiJqYW5lLnNtaXRoIiwibmFtZSI6IkphbmUgU21pdGgiLCJ1c2VybmFtZSI6Imp3dF9tYXN0ZXIiLCJpYXQiOjE1MTYyMzkwMjJ9Cg

1
Ler
2
Validar
3
Concluir

Pronto para acompanhar seu progresso?

Crie uma conta gratuita para salvar seu progresso, ganhar pontos e acessar mais de 170 labs práticos de cibersegurança.

Comece a Aprender Grátis
Junte-se a 5.000+ hackers aprendendo cibersegurança com labs práticos. Criar Conta