Clase 101 — Fallos de autenticación y bypass
Parte: 4 — Seguridad de aplicaciones web · Fuente: The Web Application Hacker's Handbook (Stuttard & Pinto)
⏱️ Duración estimada: 120 min · Nivel: Avanzado
🎯 Objetivo
Auditar los mecanismos de autenticación y descubrir formas de saltárselos: enumeración de usuarios, fuerza bruta, fallos en recuperación de contraseña, MFA débil y lógica de login rota. La autenticación es la puerta de la aplicación; romperla suele ser el hallazgo de mayor impacto.
⚠️ Ética: solo en labs propios/autorizados. La fuerza bruta y el bypass sobre cuentas ajenas son delitos.
📚 Resultados de aprendizaje
Al finalizar, el alumno podrá:
- Detectar enumeración de usuarios por diferencias en respuestas/tiempos.
- Ejecutar fuerza bruta controlada y credential stuffing en un lab.
- Explotar fallos en flujos de recuperación de contraseña.
- Evaluar la robustez de la MFA y sus bypass comunes.
- Recomendar controles: rate limiting, MFA correcta, mensajes genéricos.
🗺️ Temas
| # |
Tema |
Por qué importa |
| 1 |
Enumeración de usuarios |
Primer paso del ataque |
| 2 |
Fuerza bruta y stuffing |
Ataque directo a credenciales |
| 3 |
Rate limiting y su evasión |
Defensa clave y sus grietas |
| 4 |
Recuperación de contraseña |
Flujo frecuentemente roto |
| 5 |
MFA: tipos y bypass |
Segunda barrera, no infalible |
| 6 |
Lógica de login rota |
Bypass sin adivinar credenciales |
| 7 |
Defensa en profundidad |
Cierre del fallo |
📖 Definiciones y características
- Enumeración de usuarios: determinar qué cuentas existen por diferencias en las respuestas. Característica: habilita ataques dirigidos.
- Credential stuffing: probar credenciales filtradas de otras brechas. Característica: explota la reutilización de contraseñas.
- Rate limiting: límite de intentos por tiempo/IP. Característica: defensa esencial contra fuerza bruta.
- MFA (autenticación multifactor): segundo factor además de la contraseña. Característica: reduce el riesgo pero tiene bypass conocidos.
- Token de reset: valor temporal para recuperar contraseña. Característica: si es predecible o no expira, es explotable.
- Response timing: diferencias de tiempo que filtran información. Característica: canal lateral de enumeración.
🧰 Herramientas y preparación
- PortSwigger labs de autenticación y DVWA.
- Burp Intruder para fuerza bruta y enumeración.
- Listas de usuarios/contraseñas de SecLists.
🧪 Laboratorio guiado
⚠️ Solo en labs propios.
- Prueba el login con un usuario inexistente y otro existente; compara mensajes y tiempos (enumeración).
- Con Intruder, enumera usuarios válidos por diferencia de respuesta.
- Ejecuta fuerza bruta de contraseña sobre un usuario válido en un lab sin rate limiting.
- Analiza el flujo de recuperación de contraseña: ¿el token es predecible?, ¿expira?, ¿se puede reusar?
- Prueba un bypass de MFA: reenviar la petición sin el paso 2, reutilizar código, o forzar el código (si no hay límite).
- Busca lógica rota: acceder a
/account con un estado de sesión parcial.
- Documenta cada debilidad con evidencia y su corrección.
✍️ Ejercicios
- Detecta enumeración de usuarios por mensaje y por tiempo, por separado.
- Diseña un ataque de credential stuffing y explica su defensa (MFA, detección de reuso).
- Analiza un token de reset y evalúa su entropía y expiración.
- Enumera 4 bypass de MFA reales y cómo prevenirlos.
- Explica por qué los mensajes de error deben ser genéricos.
- Diseña una política de rate limiting sensata (por cuenta y por IP).
📝 Reto verificable
Resuelve un lab de PortSwigger que combine enumeración de usuarios + fuerza bruta y accede a la cuenta objetivo, o un lab de bypass de MFA.
Criterio de aceptación: el lab queda resuelto, documentas la señal que reveló el usuario válido (o el fallo de MFA), la credencial/técnica y los controles que lo habrían evitado.
⚠️ Errores comunes
| Síntoma / mensaje |
Causa y cómo arreglar |
| Bloqueo tras pocos intentos |
Rate limiting; rota IPs (en lab) o busca otro vector |
| Mensajes idénticos siempre |
Sin enumeración por mensaje; prueba por tiempo |
| Token de reset aleatorio |
Bien diseñado; busca reuso o falta de expiración |
| MFA no bypasseable |
Implementación correcta; documenta como fortaleza |
| Fuerza bruta sin éxito |
Contraseña fuerte; prueba stuffing con listas reales |
❓ Preguntas frecuentes
❓ ¿La MFA elimina la fuerza bruta?
Reduce mucho el riesgo, pero un segundo factor mal implementado (sin límite, reusable) puede saltarse.
❓ ¿Por qué importan los tiempos de respuesta?
Porque una diferencia consistente entre usuario válido e inválido filtra información aunque los mensajes sean iguales.
❓ ¿Bloquear la cuenta es buena defensa?
Puede provocar denegación de servicio. Mejor combinar rate limiting, MFA y detección de anomalías.
🔗 Referencias
📥 Material descargable
⬅️ Clase anterior
Clase 100 — XML External Entities (XXE)
➡️ Siguiente clase
Clase 102 — Gestión de sesiones y ataques asociados