#IDOR ? #CyberSecurity ?️ #Pentesting ? #BugBounty ? #WebSecurity ? #HackingEthical ?? #InfoSec ? #APIvulns ? #AccessControl ? #CTFtraining ?

Las fallas de control de acceso son una de las principales causas de brechas de seguridad en aplicaciones web. Una de las variantes más críticas y comunes de este tipo de fallos es la Insecure Direct Object Reference (IDOR). Esta vulnerabilidad permite a un atacante acceder, modificar o eliminar información que pertenece a otros usuarios simplemente manipulando identificadores en URLs, formularios, APIs u otras interfaces.
Este artículo ofrece una visión profunda, práctica y sistemática sobre cómo detectar, analizar y explotar vulnerabilidades de tipo IDOR, tanto desde un enfoque manual como automatizado, siguiendo una lógica ofensiva como parte de un pentest o análisis de seguridad.
IDOR ocurre cuando una aplicación utiliza identificadores directos (como números de usuario, nombres de archivos o IDs de transacción) sin implementar validaciones de autorización adecuadas. Si un atacante puede adivinar o modificar esos identificadores para acceder a objetos o datos ajenos sin restricciones, entonces estamos ante una vulnerabilidad de este tipo.
Ejemplo clásico:
Si cambiando el valor id=102 por id=103 puedes ver el perfil de otro usuario sin restricciones, la aplicación es vulnerable a IDOR.
A continuación, se presentan técnicas y pruebas específicas para detectar y explotar vulnerabilidades IDOR de forma efectiva:
Uno de los primeros pasos es observar si los identificadores usados en URLs, formularios o parámetros API son secuenciales (ej. 1001, 1002, 1003) o predecibles.
Prueba: Accede con tu cuenta y cambia el ID por uno anterior o siguiente. Observa si puedes acceder a datos ajenos.
Objetivo: Recursos como perfiles, facturas, publicaciones, comentarios, etc.
Una práctica esencial es asegurarte de que los datos de usuario estén correctamente protegidos por mecanismos de autorización.
Prueba: Inicia sesión con un usuario y modifica los IDs en las peticiones para acceder a datos de otro.
Impacto: Ver o modificar perfiles, historial de pedidos, mensajes privados, etc.
Crear varias cuentas (usuario, admin, invitado) puede ayudarte a identificar cómo varían los identificadores y si siguen un patrón.
Prueba: Analiza diferencias en URLs, tokens, objetos en respuesta JSON o XML, etc.
Objetivo: Detectar patrones que faciliten ataques de enumeración o privilegios cruzados.
Si una aplicación permite subir archivos, verifica cómo y dónde se almacenan. A menudo, los archivos son accesibles públicamente usando nombres previsibles.
Prueba: Carga un archivo, obtén su URL, luego intenta acceder a otros archivos variando el nombre.
Ejemplo: https://example.com/uploads/2024/report1.pdf prueba con report2.pdf.
Las APIs modernas a menudo exponen datos sensibles mediante identificadores en rutas o parámetros. Si no hay validación por rol, es un blanco perfecto para IDOR.
Prueba: Modifica el user_id, order_id, etc. en solicitudes GET/POST/PUT/DELETE.
Revisión: Análisis de endpoints RESTful o GraphQL, especialmente aquellos accesibles desde el frontend.
Los formularios HTML pueden contener campos ocultos con referencias directas a objetos.
Prueba: Cambia los valores antes de enviar el formulario y analiza si puedes modificar otros objetos.
Recomendación: Nunca confíes en datos enviados desde el cliente.
Aplicaciones con frontend dinámico suelen recibir objetos completos en JSON/XML. Estos objetos pueden incluir referencias a otros recursos.
Prueba: Analiza el contenido, identifica user_id, file_id, message_id y prueba modificarlos en nuevas solicitudes.
Ejemplo: APIs móviles o SPA (Single Page Applications).
Funciones como recuperación de contraseña, validación de correo o cambios de perfil pueden estar expuestas a IDOR.
Prueba: Intercepta las solicitudes (con Burp Suite, por ejemplo) y modifica IDs, tokens o direcciones objetivo.
Impacto: Suplantación de identidad, secuestro de cuentas.
Crea varias cuentas con roles distintos (admin, user, guest) y evalúa qué recursos puede acceder cada una.
Prueba: Reutiliza solicitudes de un rol superior en uno inferior y viceversa.
Objetivo: Privilegios mal definidos o mal implementados.
Verifica si los recursos están protegidos por mecanismos de autenticación. Es posible que ciertos objetos estén expuestos incluso sin estar logueado.
Prueba: Copia una URL con ID válida y accede desde un navegador en modo incógnito.
Ejemplo: Documentos compartidos sin token o validación.
Herramientas como Burp Suite, OWASP ZAP o Acunetix pueden automatizar la búsqueda de IDORs.
Prueba: Configura un escaneo activo de todos los endpoints modificando parámetros identificadores.
Consejo: Úsalos como apoyo, pero no como único método.
El análisis forense o preventivo de logs puede revelar patrones de intento de explotación.
Prueba: Filtra logs por accesos secuenciales a recursos distintos desde la misma IP/sesión.
Uso: Identificación temprana de ataques automatizados o usuarios malintencionados.
Algunas aplicaciones usan cookies para identificar usuarios. Manipular valores como user_id o session_token puede tener impacto.
Prueba: Cambia manualmente el contenido de la cookie y monitorea la respuesta del servidor.
Cuidado: Algunas implementaciones inseguras confían completamente en valores del lado cliente.
Muchas APIs implementan diferentes comportamientos según el método HTTP utilizado.
Prueba: Repite una petición con métodos distintos: GET, POST, PUT, DELETE, PATCH.
Objetivo: Descubrir rutas de acceso inesperadas o no protegidas con métodos alternativos.
Algunos desarrolladores creen que usar Base64 o codificaciones similares es una forma de seguridad. No lo es.
Prueba: Decodifica parámetros, modifica los valores, vuelve a codificarlos y reenvía la petición.
Consejo: Cualquier dato visible o manipulable por el cliente debe validarse en servidor.
La vulnerabilidad IDOR es crítica, común y, en muchos casos, sencilla de explotar. La clave está en probar cada punto de entrada, analizar patrones en los identificadores y evaluar la lógica de autorización en todos los niveles de la aplicación.
Desde un enfoque ofensivo, IDOR permite escalar privilegios, acceder a información sensible, secuestrar cuentas o realizar acciones en nombre de otros usuarios. Desde la defensa, implica la necesidad urgente de implementar controles de autorización robustos, revisar constantemente el código y realizar pruebas de seguridad periódicas.