Ghost Academy
🔐 LABORATORIO PRÁCTICO · AUTENTICACIÓN JWT ← Volver al curso de Burp

🔐 GhostAuth

“Un JWT es solo Base64, no cifrado: cualquiera puede leerlo y editarlo. El problema nunca es que los datos vayan «sin cifrar» — el problema es cómo se verifica (mal) la firma.”
JWT!
🎯 En qué consiste

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.

★★★★☆Media-alta
3Retos
JWT / AuthCategoría
:5003Puerto local
🧠 Qué aprenderás

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.

⚠️ Antes de empezar

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.


🕹️ Retos de este laboratorio
Reto 1 · 🚫
Firma no verificada (alg:none)

El verificador confía en el algoritmo que dice la propia cabecera del token — un valor que controla quien envía la petición.

Reto 2 · 🔑
Secreto HS256 débil

El token de API de larga duración está firmado con un secreto corto y adivinable, crackeable offline contra una wordlist pequeña.

Reto 3 · 🔁
Confusión de algoritmo

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.


🚀 Empieza aquí
📦 Descargar laboratorio GhostAuth.zip · para montarlo en tu máquina 📖 Ver write-up completo contiene la solución de los 3 retos — spoiler