Hace poco encontré mi primera vulnerabilidad en HackerOne, básicamente se trataba de un IDOR (Insecure Direct Object Reference) el cual permitía la enumeración de los usuarios de la plataforma. En este post voy a explicar el procedimiento de la explotación, todo se explicará de forma totalmente conceptual, ya que no se puede mostrar información por temas de confidencialidad.
Primero de todo, cuando se estaba autenticado en la web, se podía acceder al perfil de nuestra cuenta, el cual de forma simplificada se veía más o menos así:


Si nos fijamos en la URL, podemos ver lo que presuntamente es un UID (Identificador de Usuario). En este escenario, lo primero que se le ocurre a cualquier persona sería cambiarlo por otro número para ver si puede ver el perfil de otros usuarios, y con ello, entre otras cosas, su nombre de usuario, email, etc.
Al probar esto, no hubo suerte, la web mostraba “Acceso No Autorizado“. Eso si, en los casos donde el UID no existía, mostraba un error 404. Por lo que, de cierta manera, se podía enumerar los UID usados por cuentas de usuario. Pero bueno, eso realmente no sirve de nada porque no obtienes ninguna información que ponga en riesgo la confidencialidad del usuario.
Por lo que se me ocurrió probar la función de “Resetear Contraseña“. Cuando se hace uso de esta funcionalidad se recibe un email con un link para resetear tu contraseña. El link tiene aproximadamente la siguiente forma:
- https://website.com/user/reset/117/<caracteres random>/<caracteres random>
Cuando accedía, ocurría una redirección a:
- https://website.com/user/reset/117
Y se llegaba a una web parecida a la siguiente:


Como vemos, aquí también observamos el Identificador de Usuario en la URL, por lo que de nuevo probé el cambiarlo por el de otro usuario. Por ejemplo a:
- https://website.com/user/reset/119
Y… “Acceso No Autorizado“. Tampoco funcionó.
Sin embargo, lo que hice entonces fue acceder de nuevo al link recibido en el correo, que era:
- https://website.com/user/reset/117/<caracteres random>/<caracteres random>
Pero, aquí fue donde hice el cambio del Identificador de Usuario, al acceder de nuevo, pero cambiando el UID en el link del email, ocurría la redirección mencionada previamente, y al llegar a la web de arriba, se podía observar lo siguiente:


¡Ahora sí!, cambiando el UID en el link mandado al correo y no en el link final, permitía que cuando cargase la web del link final, se mostrase el usuario correspondiente al UID que nosotros habíamos indicado. Ocasionando, una enumeración de usuarios de la plataforma.
OJO, aquí algunos detalles importantes:
- Esto no quiere decir que pudieses cambiar la contraseña del usuario que quisieses, solo podías observar el nombre del usuario.
- Antes de acceder al link del correo con UID distinto al tuyo, tenías que acceder por primera vez con el UID de tu usuario. Si no, no funcionaba, esto me imagino que estaba ocurriendo porque primero tenías que (por así decirlo) validar el link con el UID del usuario para el que se mandó el correo.
Y esta ha sido la primera vulnerabilidad que he encontrado en Bug Bounty, todas las que vaya encontrando y piense que pueden aportar algo, se subirán al blog 😊.
PD: Recordatorio de que tenéis un post de Cómo empezar en Bug Bounty.
Cuánto ganaste por este fallo?
Nada, ya que este programa de Bug Bounty no pagaba. Lo que si me hizo ganar fue reputación en HackerOne, para que me inviten a programas privados mejores
awesome