
Descripción
This lab is vulnerable due to a logic flaw in its password brute-force protection. To solve the lab, brute-force the victim’s password, then log in and access their account page.
- Your credentials:
wiener:peter
- Victim’s username:
carlos
- Candidate passwords
Broken brute-force protection, IP block writeup
Este laboratorio es idéntico al anterior (Username enumeration via response timing), salvo que en este caso el bloqueo se puede evitar entrando en nuestra cuenta con el usuario ‘wiener’ y la contraseña ‘peter’ cada 2 intentos. Realizaremos un ataque ‘Pitchfork’ donde cada dos intentos sobre la cuenta del usuario ‘carlos’ realizaremos un acceso correcto a la nuestra.
Primero tendremos que modificar la lista de usuarios y de contraseñas. Usaremos los siguientes códigos de Python.
Para los usuarios:
i = 1
while (i<101):
if(i%3==0):
print("wiener")
i+=1
else:
print("carlos")
i+=1
Para las contraseñas:
i=0
with open('passwords.txt', 'r') as f:
lines = f.readlines()
for passw in lines:
print(passw.strip())
i+=1
if(i%2==0):
print("peter")
Nota: El archivo ‘passwords.txt’ contiene la lista de contraseñas proporcionadas por PortSwigger, debe estar en el mismo lugar que el script de Python y la consola que lo ejecute debe de estar en la misma carpeta también.
Luego, interceptaremos la petición de inicio de sesión, la modificaremos de la siguiente forma:

Nota: Es importante poner entre los símbolos el usuario ‘wiener’ y la contraseña ‘peter’, para que el primer inicio de sesión sea correcto y se resetee el contador que nos bloquea.



Nota: Debemos de dejar las peticiones concurrentes a 1 en la ‘Resource pool’, para que se envíen ordenadamente las credenciales y no se complete el bloqueo.
Al finalizar el ataque veremos lo siguiente:

Iniciando sesión en el navegador con el usuario ‘carlos’ y la contarseña ‘starwars’ completaremos el laboratorio:
