Nuevos labs cada semana — Accede a todos desde 5€/mes

JWT

Informativo

JSON Web Token

Definición

JSON Web Token (JWT) es un estándar abierto (RFC 7519) para crear tokens de acceso que contienen claims (declaraciones) codificadas en JSON. Un JWT consta de tres partes: header (algoritmo), payload (claims) y signature (firma). Se usan ampliamente para autenticación en APIs. Las vulnerabilidades en JWT pueden llevar a bypass de autenticación y escalada de privilegios.

Impacto

Autenticación stateless ampliamente usada en APIs modernasAtaques de algoritmo 'none' pueden permitir crear tokens sin firmaConfusión de algoritmo (RS256 a HS256) puede permitir forjar tokensSecretos débiles pueden ser crackeados por fuerza bruta (jwt_tool, hashcat)Tokens sin expiración o con claims modificables facilitan el account takeover

Ejemplos

Estructura y ataques comunes a JWT

Los ataques más comunes a JWT incluyen: cambiar el algoritmo a 'none' para evitar la verificación de firma, crackear secretos débiles con hashcat, o explotar la confusión entre algoritmos simétricos (HS256) y asimétricos (RS256) para forjar tokens válidos.

# Estructura de un JWT (3 partes separadas por puntos):
# HEADER.PAYLOAD.SIGNATURE

# Header (base64url)
{"alg": "HS256", "typ": "JWT"}

# Payload (base64url)
{"userId": "123", "role": "user", "exp": 1713262800}

# Ataque 1: Algorithm None
# Cambiar header a {"alg": "none"} y eliminar la firma
# eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJ1c2VySWQiOiIxMjMiLCJyb2xlIjoiYWRtaW4ifQ.

# Ataque 2: Crackear secreto débil
$ hashcat -a 0 -m 16500 jwt.txt rockyou.txt
# Si el secreto es "password123", ahora puedes firmar tokens arbitrarios

Practica JWT con labs reales

Aplica lo que has aprendido en entornos seguros basados en reportes de bug bounty.

Ver labs de práctica