
Esta es una vulnerabilidad que encontré en un programa de Bug Bounty en HackerOne. El reporte ya se ha resuelto, pero todavía no se ha hecho público, así que replicaré la vulnerabilidad en esta publicación para que la tengas en cuenta a la hora de hacer Bug Bounty o incluso durante tu trabajo.
Después de estar varios días intentando encontrar alguna vulnerabilidad en aquel programa sin éxito, estuve a punto de dejarlo, pero se me ocurrió revisar la parte de códigos de referido, ya que es una funcionalidad bastante olvidada dentro del perfil del usuario.
Buscando en internet encontré dos códigos y, probando con cuentas diferentes, ambos funcionaban. En ese momento pensé: ¿y si intento aplicar los dos códigos al mismo tiempo?
Así que registré un nuevo usuario en la aplicación, envié dos veces la petición de aplicar el código al Repeater de Burp Suite y en cada petición coloqué un código distinto. Muy importante también agrupar ambas peticiones y enviarlas como grupo paralelo, en inglés: Send group (parallel).
En la primera imagen se puede observar cómo desde la URL se añade el código SRPTEDPHA y el backend devuelve un identificador del número de código 2000195. Fíjate también en la fecha: fue añadido a las 19:04:21.925.

En la segunda imagen se puede ver cómo el backend también acepta el segundo código SRPS4TAPV. El identificador se incrementó en uno, hasta 2000196, y la fecha de creación es prácticamente la misma: si te fijas bien, se añadió a las 19:04:21.926, apenas un milisegundo de diferencia o incluso menos.

El ataque ha funcionado gracias a la simultaneidad de ambas peticiones. El backend no ha tenido tiempo de procesar y registrar el primer código antes de recibir el segundo, por lo que al validar si ya existía un código aplicado, la comprobación devuelve falso en ambos casos y los dos pasan la validación.
El impacto final de esta vulnerabilidad es que un usuario podría añadir múltiples códigos de referido cuando la aplicación limitaba a un máximo de uno. Esto afecta a la integridad de la aplicación, y especialmente a la parte económica, ya que cada código suponía unos 20 $ de recompensa.
Desafortunadamente, no pude llegar a probarlo al tratarse de una aplicación extranjera en la que era necesario ingresar 3.000 $ para poder recibir los 20 $ por código. Aun así, la vulnerabilidad fue aceptada sin problemas, más allá de pedirme más información, algo habitual en la mayoría de programas de Bug Bounty.
Esta vulnerabilidad ya ha sido resuelta, pero el informe todavía no se ha publicado. Cuando lo hagan público, añadiré el enlace en este mismo artículo.
Recuerda que si necesitas ayuda para empezar en el mundo de la ciberseguridad o te gustaría mejorar principalmente en Hacking web. ¡Ofrezco clases particulares online! -> Contacta conmigo
