Entrada

TryHackMe - IDOR

🔑 Aprende a encontrar y explotar vulnerabilidades IDOR en una aplicación web

TryHackMe - IDOR

Aprende a encontrar y explotar vulnerabilidades IDOR en una aplicación web, permitiéndote acceder a datos a los que no deberías tener acceso. Tryhackme Room Link

¿Qué es un IDOR?

IDOR significa Referencia Directa a Objeto Insegura y es un tipo de Vulnerabilidad de Control de Acceso.

Este tipo de vulnerabilidad puede ocurrir cuando un servidor web recibe entrada proporcionada por el usuario para recuperar objetos (archivos, datos, documentos), se ha depositado demasiada confianza en los datos de entrada y estos no se validan en el lado del servidor para confirmar que el objeto solicitado pertenece al usuario que lo solicita.

Un ejemplo de IDOR

Imagina que te acabas de registrar en un servicio en línea y quieres cambiar la información de tu perfil. El enlace en el que haces clic lleva a http://online-service.thm/profile?user_id=1305 y puedes ver tu información.

La curiosidad te vence e intentas cambiar el valor de user_id a 1000 en lugar de (http://online-service.thm/profile?user_id=1000). Para tu sorpresa, ahora puedes ver la información de otro usuario. ¡Has descubierto una vulnerabilidad de IDOR!

Idealmente, debería haber una verificación en el sitio web para confirmar que la información del usuario pertenece al usuario que la solicitó.

Con lo aprendido anteriormente, haz clic en el botón Ver sitio e intenta obtener una marca descubriendo y explotando una vulnerabilidad de IDOR.

Podemos ver los cuatro correos electrónicos.

Averigüemos para cuál podemos usar esta vulnerabilidad:

IDOR Example

Intenta cambiar el número de orden a 1000:

IDOR Example 2

Y recibimos la bandera:

IDOR Example 3

Question:

¿Cuál es la bandera del sitio web de ejemplo de IDOR?

Respuesta:
1
THM{IDOR-VULN-FOUND}

Encontrar IDORs en IDs Codificados

IDs Codificados

Al transferir datos de una página a otra, ya sea mediante datos de publicación, cadenas de consulta o cookies, los desarrolladores web suelen codificar primero los datos sin procesar. La codificación garantiza que el servidor web receptor pueda comprender el contenido. La codificación convierte los datos binarios en una cadena ASCII, que suele utilizar los caracteres a-z, A-Z, 0-9 y = como relleno. La técnica de codificación más común en la web es la codificación base64 y suele ser bastante fácil de identificar. Puedes usar sitios web como base64encode para decodificar la cadena, editar los datos y volver a codificarlos utilizando base64encode y, a continuación, volver a enviar la solicitud web para comprobar si hay algún cambio en la respuesta.

Respuesta:
1
base64

Encontrar IDORs en IDs Hasheados

IDs Hasheados

Los IDs hasheados son un poco más complicados de manejar que los codificados, pero pueden seguir un patrón predecible, como ser la versión hasheada del valor entero. Por ejemplo, el número de ID 123 se convertiría en 202cb962ac59075b964b07152d234b70 si se utilizara el algoritmo de hash md5.

Vale la pena poner cualquier hash descubierto a través de un servicio web como crackstation (que tiene una base de datos de miles de millones de resultados de hash a valor) para ver si podemos encontrar alguna coincidencia.

Respuesta:
1
base64

Encontrar IDORs en IDs Impredecibles

IDs Impredecibles

Si no se puede detectar el ID utilizando los métodos anteriores, un excelente método para detectar IDOR es crear dos cuentas y cambiar los números de ID entre ellas. Si puedes ver el contenido de otro usuario utilizando su número de ID mientras sigues conectado con una cuenta diferente (o sin estar conectado en absoluto), has encontrado una vulnerabilidad IDOR válida.

Respuesta:
1
2

¿Dónde están ubicados?

El endpoint vulnerable al que te diriges puede no ser siempre algo que veas en la barra de direcciones. Podría ser contenido que tu navegador carga mediante una solicitud AJAX o algo referenciado en un archivo JavaScript.

A veces, los endpoints pueden tener un parámetro sin referencia que pudo haber sido útil durante el desarrollo y que se envió a producción. Por ejemplo, puedes observar una llamada a /user/details que muestra tu información de usuario (autenticada a través de tu sesión). Pero mediante un ataque conocido como minería de parámetros, descubres un parámetro llamado user_id que puedes usar para mostrar la información de otros usuarios, por ejemplo, /user/details?user_id=123.

Respuesta:
1
No se necesita respuesta

Un Ejemplo Práctico de IDOR

Comience presionando el botón Iniciar máquina; una vez iniciado, visite el sitio web en una nueva pestaña del navegador:

https://WEBSITE_IP.p.thmlabs.com

Primero deberá iniciar sesión. Para ello, haga clic en la sección de clientes y cree una cuenta. Una vez iniciada la sesión, haga clic en la pestaña Su cuenta.

La sección Su cuenta le permite cambiar su información, como nombre de usuario, correo electrónico y contraseña. Verá que los campos de nombre de usuario y correo electrónico están prellenados con su información.

Práctica 1

Comenzaremos investigando cómo se prellena esta información. Si abres las herramientas para desarrolladores del navegador, seleccionas la pestaña de red y luego actualizas la página, verás una llamada a un endpoint con la ruta /api/v1/customer?id={user_id}.

Esta página devuelve en formato JSON tu ID de usuario, nombre de usuario y dirección de correo electrónico. La ruta muestra que la información de usuario mostrada se obtiene del parámetro id de la cadena de consulta.

Intentemos actualizar nuestro nombre de usuario a otro y hagamos clic en actualizar:

Practice 2

Podemos hacer clic derecho y seleccionar Edit and Resend.

Practice 3

Cambia el ID a 1 y haz clic en Send.

Practice 4

Podemos ver que el ID ahora ha cambiado y podemos ver la información del usuario.

Practice 5

Respuesta:
1
adam84

Ahora hacemos lo mismo para el ID 3:

Practice 6

Respuesta:
1
j@fakemail.thm

Esta entrada está licenciada bajo CC BY 4.0 por el autor.