🔐 GhostAuth
GhostAuth es la quinta app de la serie: un servicio de identidad y notas privadas de juguete — inicia sesión, guarda tus notas, genera un token de API personal para usarlas desde fuera, conecta una integración de partner. A diferencia de sus cuatro hermanos (que usan cookies de sesión de Flask), GhostAuth identifica cada petición con un Authorization: Bearer <token> — un cambio de skill deliberado hacia el formato de autenticación más habitual en APIs reales.
Los tres retos son las tres vulnerabilidades de JWT más documentadas y repetidas en informes reales de bug bounty, equivalentes a los laboratorios «JWT authentication bypass» de PortSwigger Web Security Academy. Los tres apuntan al mismo objetivo final: leer las notas privadas de la cuenta admin, sin conocer nunca su contraseña.
A usar la extensión gratuita JWT Editor de la BApp Store (ya vista en el capítulo 10 del manual) para editar cabecera y payload de un token y firmarlo de nuevo, a crackear un secreto HS256 débil con un script corto, y a entender la confusión de algoritmo RS256 → HS256 — el fallo más sutil de los tres, donde una clave pública (que nunca es secreta) termina reutilizada por error como si lo fuera.
Se practica en local contra tu propia instancia (127.0.0.1). Los 3 retos consisten en falsificar un token propio — nunca hace falta conocer ni adivinar la contraseña de admin. Usa /reset para devolver la base de datos a su estado inicial; los secretos de firma y las claves RSA del partner no cambian con el reset, así que un token que ya hayas forjado sigue funcionando después.
El verificador confía en el algoritmo que dice la propia cabecera del token — un valor que controla quien envía la petición.
El token de API de larga duración está firmado con un secreto corto y adivinable, crackeable offline contra una wordlist pequeña.
El verificador acepta HS256 usando la clave pública RSA del partner como si fuera un secreto simétrico — pero una clave pública, por definición, no es secreta.