Parte: 4 — Seguridad de aplicaciones web · Fuente: Real-World Bug Hunting (Yaworski) / OWASP Top 10 A01 ⏱️ Duración estimada: 110 min · Nivel: Avanzado
Explotar el control de acceso roto (Broken Access Control), la categoría número 1 del OWASP Top 10. Nos centramos en IDOR (referencias directas inseguras a objetos) y path traversal (acceso a archivos fuera del directorio permitido), dos de los hallazgos más frecuentes y rentables en bug bounty.
⚠️ Ética: solo en labs propios/autorizados. Acceder a datos de otros usuarios reales es un delito.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Autorización vertical vs. horizontal | Dos ejes del control roto |
| 2 | IDOR clásico | El bug más frecuente |
| 3 | IDOR con identificadores no obvios | UUID, hashes, encoding |
| 4 | Forced browsing a funciones admin | Acceso directo por URL |
| 5 | Path/directory traversal | Lectura de archivos |
| 6 | Métodos y verbos HTTP | Bypass por verbo |
| 7 | Defensa: authz por objeto | Cierre del fallo |
../ para salir del directorio permitido. Característica: lee archivos arbitrarios del servidor.⚠️ Solo en labs propios.
/api/orders/1001).1002 y observa si accedes a datos de otro usuario (IDOR horizontal)./admin o a endpoints de administración con tu sesión normal.GET /download?file=../../../../etc/passwd
%2e%2e%2f), doble encoding, prefijos absolutos./etc/passwd vía path traversal evadiendo un filtro de ../.Resuelve dos labs de PortSwigger: un IDOR que exponga datos de otro usuario y un path traversal que lea un archivo del sistema. Criterio de aceptación: ambos labs quedan resueltos, documentas el identificador/ruta manipulados, la evidencia del acceso no autorizado y la defensa (authz por objeto, canonicalización de rutas).
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| Cambiar el ID da 403 | Hay control de acceso; busca otro objeto/verbo |
| UUID "imposible de adivinar" | Suele filtrarse en otra respuesta; búscalo |
../ filtrado |
Prueba encoding, doble encoding o rutas absolutas |
| Admin accesible pero vacío | Falta el rol; prueba acciones concretas |
| Falso IDOR | Confirma con dos cuentas distintas |
❓ ¿Por qué IDOR es tan común? Porque los desarrolladores confían en que el ID no es adivinable, en vez de verificar la propiedad del objeto en cada petición.
❓ ¿Los UUID previenen IDOR? Dificultan la adivinación, pero no son control de acceso. Si el UUID se filtra, el IDOR persiste.
❓ ¿Path traversal solo lee archivos? Leer es lo básico; combinado con upload o LFI puede escalar a ejecución de código en algunos contextos.
Clase 104 — Seguridad de OAuth 2.0 y OpenID Connect