BBLABSBBLABS
LaboratoriosAprender desde 0FuncionesPreciosTestimoniosDetrás de BBLABS
  1. Inicio
  2. Labs
  3. Open Redirect Playground
Fácil15 min

Open Redirect Playground

Por @gorka

Un SaaS ficticio (Lumen Workspace) cuyo endpoint de cierre de sesión acepta un destino arbitrario en `redirect_url`. El servidor hace `res.redirect(302, …)` con el valor tal cual, sin validar same-origin, esquema ni host.

Este hackeo se reportó sin recompensa

923 visitas47 completadosActualizado sept 2026
Iniciar sesión para empezar

Aprende a encontrar este bug

Un hackeo real de YesWeHack, reproducido para que lo practiques.

Crea tu cuenta y practica bugs reales que se pagaron. Descarga el entorno, encuéntralo y aprende la técnica exacta — tu camino a tu primer bounty.

650

hunters entrenando

50

labs de hackeos reales

380

completaciones

$12.000

pagados por estos bugs

40 flags capturadas esta semana
Crear cuenta
Ya tengo cuenta

Acceso a todos los labs · sin permanencia · cancela cuando quieras

Hackers que lo han resuelto· 8

zuk4r11
@zuk4r1Hace 6 días
emperador2
@emperadorHace 8 días
bizedtv3
@bizedtvHace 16 días
r00thor
@r00thorHace 19 días
jose.vuln
@jose.vulnHace 21 días
elc0ket
@elc0ketHace 25 días
DA
@david.pow.mago 2026
melvin
@melvinago 2026

Objetivos

1
Entender la primitiva: leer el código de `server/src/routes/auth.ts:90-100` y ver cómo `req.query.redirect_url` viaja sin validación a `res.redirect(302, …)
2
Probar al menos 3 payloads del playground (`/playground`)
3
Identificar variantes** que normalmente saltan validadores naive

Información

Plataforma
YesWeHack
Dificultad
Fácil
Duración
15 min
Bounty
Sin recompensa
Completados
47
Creador
gorka@gorka
Actualizado
sept 2026

Descarga el entorno

Reprodúcelo y encuentra el bug tú mismo

Crear cuenta

Herramientas

Navegador

Prerequisitos

  • Navegador

Tags

Open Redirect

Logro que recibirás

Cuando resuelvas este lab desbloqueas este logro compartible

Cuando resuelvas este lab desbloqueas este logro compartible

Writeups de la comunidad

Gratis · sin cuenta

La checklist que repaso en cada objetivo nuevo

47 comprobaciones ordenadas por coste: primero lo que te puede meter en un lío, luego lo barato, y al final lo caro — que es donde están los bounties grandes. Te la mando al correo ahora mismo.

Te das de baja en un clic, desde cualquier correo.

Descripción del lab

Lumen Workspace es un producto inventado: un canvas de notas y workspaces compartidos al estilo Linear/Notion. El landing tiene hero animado, feature cards con stagger, y un menú de cuenta en la esquina superior derecha con un input "After sign out, send me to" deliberadamente expuesto.

La feature "redirect after logout" existe porque (según la narrativa) el equipo de growth quería que los usuarios pudieran ser devueltos a una landing de campaña al cerrar sesión desde un email. Para soportar esa UX, el endpoint acepta tanto rutas relativas como URLs absolutas y, de forma "intencionadamente flexible", no impone allowlist.

El bug vive en server/src/routes/auth.ts:

router.get('/logout', (req, res) => {
  res.clearCookie('lumen_token');
  const next = (req.query.redirect_url as string) || '/';
  return res.redirect(302, next);
});

No hay decoys complejos — esto es un lab básico. Las páginas de Dashboard / Profile / Activity / Workspaces existen para que el lab se sienta como una app real, no como una página estática con un solo botón.


Cómo verificar (sustituye al flag)

# 1) Levantar el lab
./autodeploy.sh deploy
# (o:  docker compose up --build -d)

# 2) PoC automatizado — confirma el 302 a host externo
python3 exploit.py

# 3) Suite de tests — 6 checks end-to-end
pip install -r tests/requirements.txt
python3 tests/verify.py

Los criterios de éxito están definidos en tests/verify.py:

# Check Cómo
1 Smoke: el lab responde en localhost:1402 GET / → 200
2 Registro de usuario funciona POST /api/auth/register → 200 + token
3 Login funciona POST /api/auth/login → 200 + token
4 VULN PRESENTE: redirect arbitrario externo GET /api/auth/logout?redirect_url=https://example.com/x → 302 + Location: https://example.com/x
5 Endpoint legítimo requiere auth GET /api/auth/me sin token → 401
6 Variantes peligrosas también funcionan GET /api/auth/logout?redirect_url=//example.com → 302 con Location protocol-relative

Diferencias con otros labs de Open Redirect del repo

Lab Categoría Foco
Basic_OR (este) Easy · Playground Vuln trivial + UI súper pulida + páginas explicativas
Nexora Hard · Gold Backslash bypass + bot Puppeteer arrastrando X-ULTRA-SECRET-TOKEN
Legacy "Open Redirect Logout function" Easy Comentarios // VULNERABLE: visibles — pendiente de refactor

Si vienes "del cole" y quieres verlo paso a paso, empieza aquí. Si ya entiendes el patrón y quieres encadenar con OAuth/cookie smuggling, salta a Nexora.

La comunidad

Esto no es una plataforma con usuarios.Es gente rompiendo lo mismo que tú.

Dentro se pregunta, se enseña lo que se ha encontrado y se resuelve en grupo lo que atascaría a cualquiera solo. Se entra gratis: sin cuenta, sin plan y sin dejar el correo.

Entrar a la comunidad de BBLABS en Discord
Entrar al Discord

Es gratis y abierto. No hace falta tener cuenta en BBLABS para entrar.

BBLABS LogoBBLABS

Laboratorios de hacking basados en hackeos reales. Aprende practicando sobre entornos vulnerables, con la resolución explicada paso a paso.

Producto

  • Funcionalidades
  • Precios
  • Labs
  • Aprender desde 0
  • Blog
  • Detrás de BBLABS

Legal

  • Términos
  • Privacidad
  • Cookies
  • Entrar
  • Crear cuenta

Para cualquier duda, bug, soporte o sugerencia puedes escribir a team@bblabs.es

© 2026 BBLABS. Todos los derechos reservados.