Mass Assignment Privilege Escalation Lab
Aplicacion de gestion de tareas donde el endpoint de registro acepta el campo 'role' del body de la peticion sin filtrar, permitiendo registrarse directamente como administrador.
Aprende a encontrar este bug
Un reporte real de bug bounty, 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.
hunters entrenando
labs de reportes reales
completaciones
en bounties practicados
Acceso a todos los labs · sin permanencia · cancela cuando quieras
Hunters que lo han resuelto· 8
Objetivos
Logro que recibirás
Cuando resuelvas este lab desbloqueas este logro compartible
Mass Assignment Privilege Escalation Lab
Writeups de la comunidad
Credenciales
| Usuario | Contrasena | Rol |
|---|---|---|
| alice | password123 | user |
| bob | password123 | user |
| charlie | password123 | user |
Despliegue
# Opcion 1: autodeploy
./autodeploy.sh
# Opcion 2: manual
docker compose up --build
# Acceder
https://localhost:1000
Compatible con macOS, Linux y Windows (Docker Desktop / WSL).
Para parar:
./autodeploy.sh destroy
# o: docker compose down -v
Contenido del Lab
La aplicacion
Taskly es una aplicacion de gestion de tareas con categorias, prioridades, estados y feed publico de tareas.
La vulnerabilidad
El endpoint POST /api/auth/register lee req.body.role directamente sin filtrar. Si el campo no esta presente, usa 'user' por defecto, pero si el atacante lo incluye como 'admin', se crea la cuenta con privilegios de administrador.
Cadena de ataque
1. Registrarse normalmente → role: user
2. Observar la respuesta JSON (incluye role)
3. Repetir registro con role: admin en el body
4. Login → Acceso total al panel admin
5. Gestionar usuarios y tareas de todos
Solucion interactiva
Accede a /writeup dentro de la aplicacion para una guia paso a paso con botones interactivos.
Remediacion
- Nunca leer campos sensibles directamente del body del usuario
- Usar un whitelist de campos permitidos en el registro
- Hardcodear role: 'user' en el servidor
- Implementar DTOs (Data Transfer Objects) para filtrar campos de entrada