Laboratorio: enumeración de nombres de usuario mediante bloqueo de cuenta
Last updated
Last updated
Este laboratorio es vulnerable a la enumeración de nombres de usuarios. Utiliza el bloqueo de cuentas, pero contiene un error lógico. Para resolver la práctica de laboratorio, enumere un nombre de usuario válido, aplique fuerza bruta a la contraseña de este usuario y luego acceda a su página de cuenta.
De esta forma podemos hacer un ataque por payload clusterbomb añadiendo null a la contraseña, sin un tercer payload por el ultimo parametro de posicion.
Y en el resultado aparece así:
EL caso es que pillamos a username como “mysql”, y podemos observar que efectivamente la length es diferente de las demás ademas el mensaje de error es completamente diferentes, nos arroja el mensaje que tenemos en la captura de pantalla:
Ahora bien, esto me funcionó esta vez porque probé de a pocas entradas de username para ver si funcionaba y efectivamente está vez si me funcionó, porque antes cuando ingresaba todo el .txt para el payload no me funcionaba nunca y se quedaba todo igual normal, entonces no había nada para encontrar, está vez si, con la solución que mencionó.
Durante un análisis de seguridad es posible que necesitemos ver si la respuesta del servidor contiene información importante para nosotros y no sólo comparar el peso/longitud de cada respuesta, es decir, la columna length.
Ya que tenemos el posible “username” vamos a probar las posibles contraseñas, así que cambiamos todo en positions y cambiamos el payload que antes era cluster bomb, está vez con sniper ya que tenemos algo concreto que queremos encontrar, clusterbomb es para cuando atacaremos params que desconocemos se usa comunmente para ataques de fuerza bruta de passwords o usernames como fue mi caso.
Esto lo hacemos así con el fin de poder filtrar los resultados de contraseñas de los que no son realmente las posibles candidatas a contraseñas,ahora bien dentro del resultado nos encontramos con algo curioso que es lo que nos define la real contraseña:
Si miramos la imagen, hay ciertas contraseñas que el mensaje de error casual no lo toman sino el de “haz hecho mucho intentos incorrectos intenta en 1 minuto” ¿correcto? y las otras pocas son las del error casual “invalid username or password.” pero ahora FIJEMONOS en el espacio en blanco que no contiene nada, ¿que contiene está contraseña? no arrojo ninguno de los dos errores, algo raro hay aqui y si vemos la response Renderizada:
Nos muestra el inicio de sesión como algo normal, nada de errores ni nada por el estilo, posiblemente está sea la contraseña, la probaremos y ya miraremos…
username: mysql
password: thunder
Enhorabuena efectivamente, esa es la contraseña, despues de todo lo complejo pudimos encontrar la contraseña, pero la clave estuvo en no hacerlo desde grep Match sino grep extract que varía en que el mensaje que queremos filtrar lo establecemos con la extracción del codigo directamente de la pagina.