BBLABSBBLABS
LaboratoriosAprender desde 0FuncionesPreciosTestimoniosDetrás de BBLABS
  1. Inicio
  2. Labs
  3. Wizard Takeover ATO ( IDOR + CSRF )
Insane45 min

Wizard Takeover ATO ( IDOR + CSRF )

Por @gorka

Plataforma ficticia de memoriales para mascotas. El wizard de creación de 5 pasos se puede secuestrar anónimamente combinando IDs enumerables + ausencia de session binding + un token CSRF que el backend acepta literal (`"csrf-token"`). El atacante toma control del memorial, lee datos privados y recupera la flag

$1,500

Es lo que una empresa pagó por este fallo en YesWeHack. Aquí lo tienes reconstruido para que lo encuentres tú.

1.5K visitas17 completadosActualizado sept 2026
Iniciar sesión para empezar

Aprende a encontrar este bug

Este bug pagó $1,500 en YesWeHack.

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

MA1
@maxioliveraHace 21 horas
flyingwhales2
@flyingwhalesago 2026
thamerop003
@thamerop00ago 2026
zynap
@zynapjul 2026
kaneki
@kanekijul 2026
alndrwla
@alndrwlajul 2026
XL
@xl4njul 2026
KA
@kaiksi_acc1jul 2026

Objetivos

1
entender la app PetMemoria, identificar el wizard de 5 pasos y las URLs `/wizard/{id}/step/N`
2
descubrir que los IDs del wizard son enumerables (`GET /api/wizard/:id/state` responde sin auth)
3
confirmar que cualquier sesión anónima puede continuar el wizard de otro usuario
4
inspeccionar el HTML del paso 5
5
enviar el `POST /api/wizard/:id/step/5` cambiando `ownerEmail` a una dirección controlada
6
recoger el link de edición en `/mailbox?email=<tu-email>
7
abrir `/edit/:token` y extraer la flag de `favorite_memory`

Información

Plataforma
YesWeHack
Dificultad
Insane
Duración
45 min
Bounty
$1,500
Completados
17
Creador
gorka@gorka
Colaboradores
antoniorivera@antoniorivera
Actualizado
sept 2026

Descarga el entorno

Reprodúcelo y encuentra el bug tú mismo

Crear cuenta

Herramientas

Burp SuiteNavegador

Prerequisitos

  • Docker + Docker Compose
  • Conociminetos sobre CSRF

Tags

CSRFIDORBAC

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

PetMemoria es una plataforma SaaS ficticia donde los usuarios crean memoriales online
para sus mascotas fallecidas. La página pública muestra una galería de memoriales
publicados y permite crear uno propio a través de un wizard de 5 pasos:

  1. Paso 1: nombre, especie, raza.
  2. Paso 2: fechas de nacimiento/fallecimiento, foto preset.
  3. Paso 3: descripción / mensaje de despedida.
  4. Paso 4: rasgos de personalidad (chips multi-select), recuerdo favorito.
  5. Paso 5: email del dueño → recibe un link de edición para gestionar el memorial.

Para reducir la fricción ("permitimos retomar desde otro dispositivo sin login"), el
wizard no exige sesión y los IDs se incrementan en /wizard/{id}/step/N. El form
del paso 5 incluye un token CSRF que se renderiza con Stimulus en el frontend — pero
el backend nunca recibe el valor renderizado y acepta el string literal del placeholder.

Hay además un bot que crea memoriales pendientes cada ~20 segundos para dar vida al
lab. De vez en cuando, el bot crea un memorial llamado "Luna" que contiene la flag en
su campo favorite_memory. Como el memorial está en draft, no aparece en la galería
pública — pero sí se puede encontrar enumerando los IDs.

Cómo verificar

./autodeploy.sh deploy
python3 tests/verify.py       # 8/8 checks
python3 exploit.py            # captura la flag, exit 0
bash flag/verify.sh           # reproduce el md5

Flag

$ bash flag/verify.sh
preimage: petmemoria::luna::wizard_takeover::ywh_souvenirdesanimaux::2026
md5     : a808b4e95a1e9412f6c0ef0255ff65d7
flag    : FLAG{a808b4e95a1e9412f6c0ef0255ff65d7}
[OK] La flag esperada coincide.

Referencias

  • Reporte original anonimizado: souvenirdesanimaux.fr (YesWeHack disclosure).
  • CWE-352: https://cwe.mitre.org/data/definitions/352.html
  • CWE-639: https://cwe.mitre.org/data/definitions/639.html
  • CWE-287: https://cwe.mitre.org/data/definitions/287.html
  • OWASP A01:2021 — Broken Access Control.

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.