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.
Learn to find this bug
A real bug bounty report, reproduced for you to practice.
Create your account and practice real bugs that got paid. Download the environment, find it and learn the exact technique — your path to your first bounty.
- hunters training
- 650
- labs from real reports
- 50
- completions
- 380
- in bounties practiced
- $200,000
hunters training
labs from real reports
completions
in bounties practiced
Access to all labs · no commitment · cancel anytime
Hunters who solved it· 8
Objectives
Achievement you'll earn
Solve this lab to unlock this shareable achievement
Broken Function Level Authorization
Community writeups
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