Parte: 4 — Seguridad de aplicaciones web · Fuente: OWASP API Security Top 10 / Bug Bounty Bootcamp (Vickie Li) ⏱️ Duración estimada: 110 min · Nivel: Avanzado
Auditar la seguridad de APIs REST, hoy el backend de casi toda aplicación moderna. Usaremos el OWASP API Security Top 10 como marco, con foco en BOLA/IDOR a nivel de API, autorización rota a nivel de función y exposición excesiva de datos.
⚠️ Ética: solo en APIs propias/autorizadas. Acceder a datos de otros usuarios reales es un delito.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | OWASP API Security Top 10 | Marco específico de APIs |
| 2 | Enumeración de endpoints | Superficie de la API |
| 3 | BOLA (API1) | La vulnerabilidad de API más común |
| 4 | Broken Function Level Auth (API5) | Escalada vertical |
| 5 | Excessive Data Exposure y mass assignment | Fugas y sobre-escritura |
| 6 | Rate limiting y abuso | Disponibilidad y coste |
| 7 | Defensa: authz granular | Cierre del fallo |
isAdmin:true). Característica: sobre-escritura de propiedades.# crAPI: API vulnerable de OWASP para practicar
git clone https://github.com/OWASP/crAPI && cd crAPI && docker compose up
⚠️ Solo en APIs propias/lab.
GET /api/users/{id}/orders.{id} al de otro usuario y comprueba BOLA./api/admin/...) con tu token normal."role":"admin" o "verified":true en un PUT de perfil.En crAPI (o VAmPI), consigue acceso a datos de otro usuario vía BOLA y una escalada por mass assignment, documentando ambos. Criterio de aceptación: entregas las peticiones, la evidencia de acceso no autorizado y elevación de privilegio, y la defensa (comprobar propiedad del objeto, allowlist de campos, authz por función).
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| Cambiar el ID da 403 | Hay authz por objeto; busca otro endpoint |
| Endpoint admin devuelve 401 | Requiere rol; prueba mass assignment para obtenerlo |
| Mass assignment ignorado | El backend filtra campos; documenta la fortaleza |
| No encuentro endpoints | Revisa Swagger y el JS del cliente |
| Rate limit corta las pruebas | Baja el ritmo; documenta el límite |
❓ ¿BOLA e IDOR son lo mismo? Conceptualmente sí; BOLA es el término de OWASP API para el IDOR a nivel de objeto en APIs.
❓ ¿Por qué la exposición excesiva es un problema si la UI no lo muestra? Porque el dato viaja al cliente y cualquiera puede leer la respuesta cruda; el filtrado en el cliente no protege nada.
❓ ¿Cómo evito mass assignment? Usa allowlists de campos aceptados (DTOs), nunca vincules el body directamente al modelo de datos.
Clase 109 — Vulnerabilidades de lógica de negocio