Broken Function Level Authorization
Aplicacion de notas con endpoints administrativos que no validan correctamente el metodo HTTP. El desarrollador protegio GET/PUT/POST pero olvido proteger PATCH en el endpoint de cambio de contrasena, permitiendo cambiar la contrasena de cualquier usuario sin autenticacion de admin.
Accede a este lab
Entorno seguro y aislado
Crea una cuenta y suscríbete para acceder a todos los labs. Practica en un entorno real y seguro.
Hunters que lo han resuelto· 8
Objetivos
Logro que recibirás
Cuando resuelvas este lab desbloqueas este logro compartible
Broken Function Level Authorization
Writeups de la comunidad
Credenciales
| Usuario | Contrasena | Rol |
|---|---|---|
| sarah | password123 | user |
| marcus | password123 | user |
| elena | password123 | user |
Despliegue
# Opcion 1: autodeploy
./autodeploy.sh
# Opcion 2: manual
docker compose up --build
# Acceder
https://localhost:1001
Compatible con macOS, Linux y Windows (Docker Desktop / WSL).
Para parar:
./autodeploy.sh destroy
# o: docker compose down -v
Contenido del Lab
La aplicacion
NoteVault es una aplicacion de notas personales con sistema de notas compartidas, feed publico y panel de administracion. Los usuarios pueden crear, editar y compartir notas.
La vulnerabilidad
El endpoint /api/changepassword esta protegido con authMiddleware y adminMiddleware para los metodos PUT y POST, pero el desarrollador olvido anadir los middlewares para el metodo PATCH. Esto permite a cualquier usuario autenticado cambiar la contrasena de cualquier otro usuario.
Cadena de ataque
1. Registrarse y explorar la app
2. Descubrir /api → lista de endpoints
3. Probar PUT /api/changepassword → 403
4. Probar PATCH /api/changepassword → Funciona sin admin!
5. Cambiar contrasena del admin
6. Login como admin → Panel administrativo
7. Flag en el dashboard
Solucion interactiva
Accede a /writeup dentro de la aplicacion para una guia paso a paso con botones interactivos.
Flag
5f4dcc3b5aa765d61d8327deb882cf99
Remediacion
- Aplicar middlewares de autorizacion a TODOS los metodos HTTP del endpoint
- Usar router.all() o app.use() para aplicar middleware a nivel de ruta completa
- Implementar tests de autorizacion para cada metodo HTTP
- Auditar regularmente los middlewares de cada endpoint