Guía Completa de Explotación de IDOR en Programas Bug Bounty

En este artículo, compartiré uno de los métodos más interesantes que utilizo, el cual requiere ciertos conocimientos previos de JavaScript para su correcta implementación.


¿Qué es un IDOR?

Un IDOR, o Insecure Direct Object Reference, es una vulnerabilidad que otorga a un atacante acceso no autorizado para recuperar objetos como archivos, datos o documentos. Además, esta vulnerabilidad figura en el top 10 de OWASP de 2021  broken access control. 

La vulnerabilidad de IDOR a menudo ocurre bajo la falsa suposición de que los objetos nunca se recuperarán directamente usando su identificador único, sino simplemente a través de la lógica de la aplicación. Por lo general, una aplicación le mostrará solo los objetos que está autorizado a ver y, a menudo, le proporcionará los identificadores necesarios para recuperarlos. Sin embargo, tras la recuperación de dicho objeto, a menudo falta comprobar si el usuario solicitante tiene realmente permiso para acceder al objeto.

¿Qué tipo de IDOR existe?

Esto son los tipos de IDOR que existe:

  • Falta de comprobaciones de autorización adecuadas: Esta es la causa más común de los IDOR. Si una aplicación no verifica correctamente si un usuario está autorizado para acceder a un objeto determinado, entonces un atacante puede eludir estos controles y acceder a los datos.
  • Entropía insuficiente: si una aplicación utiliza referencias directas a objetos predecibles o fáciles de adivinar, entonces un atacante puede adivinar o utilizar la fuerza bruta para llegar a los datos.
  • Permisos incorrectos: si una aplicación establece permisos incorrectos en referencias directas a objetos, es posible que los usuarios no autorizados puedan acceder a los datos.

¿Cómo proceder a explotar?

En mi experiencia este tipo vulnerabilidad se puede llegar leyendo los JavaScript donde logras entender sobre algún parámetro interesante, otro también sería que las funciones, por ejemplo, está a la vista o usar la lógica.
Ejemplo:
example.com/user/1      Juan
example.com/user/2      Jose

Una pequeña experiencia ha sido encontrar por medio esta vulnerabilidad, correos, información sensible, credenciales (pocas veces), token, etc.

¿Cuál ha sido mi experiencia más complicada?

Programar una automatización en base64 o algún cifrado para llegar a explotar información.
Ejemplo:
example.com/user/c4ca4238a0b923820dcc509a6f75849b
Otro ejemplo:
Que la información solo se refleje en el frontend. 

¿Cómo explotarlo en la vida real?

Antes de comenzar, existen herramientas dedicadas para practicar la explotación de vulnerabilidades, como DVWA y bWAPP. En este caso, encontré una plataforma en la cual, en menos de 25 minutos, pude realizar la explotación sin generar un alto nivel de visibilidad con las solicitudes.

En esta plataforma, no tengo mucha información sobre lo que se está solicitando, por lo que debo adoptar el enfoque de un atacante para buscar posibles pistas. Este proceso implicará realizar una investigación OSINT (Open Source Intelligence). 

A continuación, les mostraré otro ejemplo en el que es posible encontrar una vulnerabilidad IDOR. Cabe destacar que, aunque no se trata de información sensible, este ejemplo puede proporcionar una idea general sobre cómo funciona esta vulnerabilidad.
IDOR detectado


IDOR detectado
Este parámetro nos muestra que con solo cambiando el numero podemos obtener diferente información, ahora te doy una idea que por medio de algún otro parámetro encontrado o ruta puedes llegar obtener información más sensible.

¿Cómo encontrar estos parámetros o esta vulnerabilidad?

En mi experiencia, una forma de identificar vulnerabilidades es mediante el análisis del código o revisando los scripts JavaScript. Otro enfoque viable es utilizar herramientas como Burp Suite para realizar una búsqueda detallada de sus scripts, lo cual puede ayudar a detectar posibles fallos de seguridad.





Así se logró encontrar una ruta interesante y parámetros para realizar nuestra búsqueda automatizada, en este ejemplo lo hare por medio del navegador.
INFORMACIÓN POR MEDIO DEL BACKEND

INFORMACIÓN POR MEDIO EL FRONTED



En este caso se logró realizar por medio de GET pero también funciona por medio de POST, se realizó automatizarlo por medio del backend nos arroje esta información.



Por medio de esta automatización y gracias a un parámetro que se encontró en la búsqueda de los JavaScript, también nos da información sensible de los clientes.

¿Cuál es el riesgo?

Esta vulnerabilidad es crítica, ya que, a través de parámetros vulnerables, es posible obtener información adicional que facilite la explotación de la plataforma. La misma puede derivar en una inyección SQL, lo que permitiría acceder a información sensible.

No olvides compartir este contenido para que podamos continuar publicando más artículos relacionados.

Artículo Anterior Artículo Siguiente