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).

Acceso a datos de otros usuariosModificación de recursos ajenosEliminación de datos de otrosEscalación de privilegiosFiltración masiva de datos

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

1

Crear dos cuentas de prueba

Cuenta A (atacante) y Cuenta B (víctima). Necesitas ambas para confirmar el IDOR.

2

Realizar acción con Cuenta A

Captura el request con Burp/DevTools. Identifica el ID del recurso en URL, body o headers.

3

Sustituir el ID

Cambia el ID de Cuenta A por el de Cuenta B. Envía el request.

4

Verificar acceso

Si recibes datos de Cuenta B → IDOR confirmado. Compara las respuestas byte a byte.

5

Probar variaciones

Cambia HTTP method (GET→PUT→DELETE), prueba ID+1, ID-1, 0, arrays ["id"], cambio de tipo string↔number.

6

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

$500+
1

Descubrimiento del endpoint

La UI muestra un botón 'Ver suscriptores' deshabilitado para usuarios normales, pero la API no tiene restricción.

2

Identificar el parámetro

El endpoint /api/newsletter/subscribers acepta un seriesUrn público (visible en la URL de la newsletter).

3

Consultar sin autorización

GET /api/newsletter/subscribers?urn={PUBLIC_URN} devuelve la lista completa de suscriptores.

4

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 gratis

Herramientas

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.

650

hunters entrenando

50

labs de hackeos reales

380

completaciones

$12.000

pagados por estos bugs

40 flags capturadas esta semana·Hackeos reales de HackerOne · YesWeHack · Bugcrowd·Sin permanencia·Academy gratis
Gratis · sin cuenta

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.

Entrar a la comunidad de BBLABS en Discord
Entrar al Discord

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