Authentication Lab 5
Skills
- Username enumeration via response timing
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio
es vulnerable a la enumeración de nombres de usuario
utilizando los tiempos de respuesta. Para resolver
el laboratorio, debemos enumerar un nombre de usuario válido
, realizar un ataque de fuerza bruta
para obtener la contraseña
de este usuario y luego acceder a la página de su cuenta
. Nuestras credenciales son wiener:peter
, tenemos los diccionarios Candidate usernames
https://portswigger.net/web-security/authentication/auth-lab-usernames y Candidate passwords
https://portswigger.net/web-security/authentication/auth-lab-passwords para bruteforcear
Resolución
Al acceder
a la web
nos sale esto
En el login
de My account
si introducimos varias veces credenciales incorrecta nos sale esto
Para intentar bypassear
esta medida
de seguridad
debemos capturar
la petición
Lo siguiente que debemos hacer en instalar
la extensión
de Burpsuite
llamada Param Miner
https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943. Una vez capturada la petición hacemos click derecho
sobre ella y se nos abrirá este menú, en este caso como solo queremos probar cabeceras señalamos la opción Extensions > Param Miner > Guess headers
Posteriormente nos saldrá este menú
en el que podemos modificar
varias opciones
, en mi caso lo voy a dejar por defecto
Si accedemos al Logger
veremos que se están enviando payloads
con diferentes cabeceras
Para ver si Param Miner
ha encontrado alguna cabecera disponible
que podamos usar nosotros nos debemos dirigir a Extensions > Param Miner > Output
. En este caso vemos que la cabecera X-Forwarded-For
es válida
Si nos dirigimos a Target > Site map
también veremos lo que se ha encontrado
Vemos que no podemos iniciar sesión
más veces hasta dentro de 30 minutos
Sin embargo, si agregamos la cabezera X-Forwarded-For
con una nueva IP
podemos enviar más peticiones. Esta IP
debe ir variando
porque a partir de la tercera petición
nos bloquea
la IP
nuevamente
Si usamos un usuario que existe como wiener
y un contraseña inválida
pero muy larga
el servidor tarda más tiempo en responder
, esto es debido a que primero comprueba si el usuario existe
y si el usuario existe pasa a validar la contraseña
. En este caso tarda tanta en validar la contraseña porque lo hace carácter por carácter
Podemos aprovechar
este error
para validar usuarios
, para ello mandamos
la petición
al Intruder
y seleccionamos
el campo username
y también el de la IP
Configuramos
el primer payload
Configuramos
el segundo payload
, para el cual vamos a usar a los usuarios
del diccionario Candidate usernames
https://portswigger.net/web-security/authentication/auth-lab-usernames
Al ejecutar
el ataque
nos damos cuenta que si enviamos como payload
al analyzer
el servidor tarda mucho más tiempo en devolver una respuesta que los demás
, lo cual quiere decir que este usuario existe
Para comprobar si este nombre
es válido
mandamos esta petición al Repeater
y vemos que efectivamente la web tarda varios segundos en responder
Desde el Intruder
seleccionamos los payloads
Configuramos
el primer payload
Configuramos
el segundo payload
haciendo uso del diccionario Candidate passwords
https://portswigger.net/web-security/authentication/auth-lab-passwords
Iniciamos
el ataque
y vemos que hay un diferencia entre el Length
de las diferentes peticiones, esto quiere decir que la contraseña
es válida
porque está devolviendo
la longitud
otra ruta
de la web
la cual tiene devuelve
una longitud diferentes
Nos logueamos
con las credenciales analyzer:jordan
Si no nos deja iniciar sesión
porque tenemos nuestra dirección IP bloqueada
podemos desde el Repeater
mandar una petición
con las credenciales analyzer:jordan
y para verla en el navegador usar esta opción de Burpsuite