Nuevos labs cada semana — Accede a todos desde 5€/mes
Ver labs →IDOR & Broken Access Control
Acceso a recursos de otros usuarios manipulando identificadores
Respuesta rápida
¿Qué es IDOR & Broken Access Control?
Un IDOR ocurre cuando la aplicación usa un identificador directo para acceder a recursos sin verificar permisos. Es la vulnerabilidad más reportada en bug bounty por su simplicidad e impacto directo.
Severidad
Alto
Frecuencia
Muy común
Payloads
10
Pasos
6
Severidad
Alto
Frecuencia
Muy común
Payloads
10
Broken Access Control (BAC) engloba cualquier fallo en la verificación de permisos. IDOR es el subtipo más común: manipular un ID en la URL, body o header para acceder a datos de otro usuario. Puede ser horizontal (mismo rol, otro usuario) o vertical (escalar a admin).
Dónde buscar
IDs en URLs de API
/api/users/{id}/profile, /api/orders/{id} — cualquier endpoint con un identificador en la ruta.
IDs en el body JSON
POST/PUT requests con {"userId": "123"} o {"orderId": "456"} en el cuerpo.
Descargas de archivos
/download?file=invoice_123.pdf — cambia el número para acceder a facturas de otros.
Endpoints de eliminación
DELETE /api/posts/{id} — si puedes borrar recursos de otros, es critical.
UUIDs 'secretos'
Los UUIDs no son secretos — muchas apps los exponen en listas públicas, perfiles o URLs compartidas.
Metodología
Crear dos cuentas de prueba
Cuenta A (atacante) y Cuenta B (víctima). Necesitas ambas para confirmar el IDOR.
Realizar acción con Cuenta A
Captura el request con Burp/DevTools. Identifica el ID del recurso en URL, body o headers.
Sustituir el ID
Cambia el ID de Cuenta A por el de Cuenta B. Envía el request.
Verificar acceso
Si recibes datos de Cuenta B → IDOR confirmado. Compara las respuestas byte a byte.
Probar variaciones
Cambia HTTP method (GET→PUT→DELETE), prueba ID+1, ID-1, 0, arrays ["id"], cambio de tipo string↔number.
Escalar el impacto
IDOR en GET = información. IDOR en PUT = modificación. IDOR en DELETE = destrucción. Combina con otros bugs.
Caso real
IDOR en API de newsletter — Enumeración de suscriptores
Descubrimiento del endpoint
La UI muestra un botón 'Ver suscriptores' deshabilitado para usuarios normales, pero la API no tiene restricción.
Identificar el parámetro
El endpoint /api/newsletter/subscribers acepta un seriesUrn público (visible en la URL de la newsletter).
Consultar sin autorización
GET /api/newsletter/subscribers?urn={PUBLIC_URN} devuelve la lista completa de suscriptores.
Datos expuestos
Nombres completos, empresas, cargos, URLs de perfil de todos los suscriptores.
Lección: La UI puede ocultar un botón, pero si la API no valida permisos, el IDOR existe. Siempre prueba los endpoints directamente, ignorando restricciones de la interfaz.
Payloads
ID numérico +1
/api/v1/users/124/profile (tu ID es 123)
UUID swap
/api/v1/orders/a1b2c3d4-... → /api/v1/orders/e5f6g7h8-...
ID en body
PUT /api/settings {"userId": "OTRO_ID", "notifications": false}ID como query param
GET /api/invoices?user_id=OTRO_ID
ID en header
X-User-Id: OTRO_ID
Payloads avanzados(requiere cuenta)
Cambio de HTTP method
GET /api/users/123 → PUT /api/users/123 → DELETE /api/users/123
Mass Assignment + IDOR
PUT /api/users/OTRO_ID {"role": "admin", "email": "attacker@evil.com"}Array wrapping bypass
{"id": ["OTRO_ID"]} o {"id": {"$eq": "OTRO_ID"}}Encoding bypass
Base64(id), hex(id), URL-encode doble: %2531%2532%2533
Wildcard/glob
GET /api/users/*/profile o GET /api/users/../admin/settings
Contenido exclusivo
Crea tu cuenta gratis para acceder a payloads avanzados, scripts y técnicas de bypass
Crear cuenta gratisHerramientas
Autorize (Burp Extension)
Compara automáticamente requests con y sin autorización para detectar IDORs.
Burp → Extender → Autorize
IDOR con ffuf
Fuzzing de IDs para descubrir recursos accesibles sin autorización.
ffuf -u 'https://target.com/api/users/FUZZ/profile' -w ids.txt -mc 200
Match & Replace (Burp)
Automatiza la sustitución de IDs en todos los requests para testing masivo.
Proxy → Options → Match & Replace → Reemplazar tu ID por otro
Tips
Los UUIDs no son secretos
Muchas apps exponen UUIDs en respuestas públicas: listas de usuarios, perfiles, URLs de share. No asumas que UUID = seguro.
Prueba siempre DELETE
Los IDORs en operaciones destructivas son más críticos y a menudo menos protegidos que los GET.
IDOR horizontal vs vertical
Horizontal: acceder a datos de otro user del mismo rol. Vertical: acceder a funciones de admin siendo user normal.
Encadena IDORs
IDOR en perfil (leak email) + IDOR en reset password = Account Takeover completo.
Contenido relacionado
Practica IDOR & Broken Access Control con labs reales
Aplica estas técnicas en entornos seguros basados en reportes reales de bug bounty.