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
hunters entrenando
labs de hackeos reales
completaciones
pagados por estos bugs
La checklist que repaso en cada objetivo nuevo
47 comprobaciones ordenadas por coste: primero lo que te puede meter en un lío, luego lo barato, y al final lo caro — que es donde están los bounties grandes. Te la mando al correo ahora mismo.
Te das de baja en un clic, desde cualquier correo.
Practica IDOR & Broken Access Control con labs reales
Aplica estas técnicas en entornos seguros basados en reportes reales de bug bounty.
La comunidad
Esto no es una plataforma con usuarios.Es gente rompiendo lo mismo que tú.
Dentro se pregunta, se enseña lo que se ha encontrado y se resuelve en grupo lo que atascaría a cualquiera solo. Se entra gratis: sin cuenta, sin plan y sin dejar el correo.

Es gratis y abierto. No hace falta tener cuenta en BBLABS para entrar.