Restablecimiento/Olvido de Contraseña Bypass
Reading time: 8 minutes
tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.
Filtración del Token de Restablecimiento de Contraseña a Través del Referente
- El encabezado HTTP referer puede filtrar el token de restablecimiento de contraseña si está incluido en la URL. Esto puede ocurrir cuando un usuario hace clic en un enlace de un sitio web de terceros después de solicitar un restablecimiento de contraseña.
- Impacto: Toma de control potencial de la cuenta a través de ataques de Cross-Site Request Forgery (CSRF).
- Explotación: Para verificar si un token de restablecimiento de contraseña se está filtrando en el encabezado referer, solicita un restablecimiento de contraseña a tu dirección de correo electrónico y haz clic en el enlace de restablecimiento proporcionado. No cambies tu contraseña de inmediato. En su lugar, navega a un sitio web de terceros (como Facebook o Twitter) mientras interceptas las solicitudes usando Burp Suite. Inspecciona las solicitudes para ver si el encabezado referer contiene el token de restablecimiento de contraseña, ya que esto podría exponer información sensible a terceros.
- Referencias:
- HackerOne Report 342693
- HackerOne Report 272379
- Artículo sobre la Filtración del Token de Restablecimiento de Contraseña
Envenenamiento del Restablecimiento de Contraseña
- Los atacantes pueden manipular el encabezado Host durante las solicitudes de restablecimiento de contraseña para apuntar el enlace de restablecimiento a un sitio malicioso.
- Impacto: Conduce a una posible toma de control de la cuenta al filtrar tokens de restablecimiento a los atacantes.
- Pasos de Mitigación:
- Valida el encabezado Host contra una lista blanca de dominios permitidos.
- Utiliza métodos seguros del lado del servidor para generar URLs absolutas.
- Parche: Usa
$_SERVER['SERVER_NAME']
para construir URLs de restablecimiento de contraseña en lugar de$_SERVER['HTTP_HOST']
. - Referencias:
- Artículo de Acunetix sobre el Envenenamiento del Restablecimiento de Contraseña
Restablecimiento de Contraseña Manipulando el Parámetro de Correo Electrónico
Los atacantes pueden manipular la solicitud de restablecimiento de contraseña añadiendo parámetros de correo electrónico adicionales para desviar el enlace de restablecimiento.
- Agrega el correo electrónico del atacante como segundo parámetro usando &
php
POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
- Agrega el correo electrónico del atacante como segundo parámetro usando %20
php
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
- Agrega el correo electrónico del atacante como segundo parámetro usando |
php
POST /resetPassword
[...]
email=victim@email.com|email=attacker@email.com
- Agregar el correo electrónico del atacante como segundo parámetro usando cc
php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
- Agrega el correo electrónico del atacante como segundo parámetro usando bcc
php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
- Agrega el correo electrónico del atacante como segundo parámetro usando ,
php
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
- Agregar el correo electrónico del atacante como segundo parámetro en el array JSON
php
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}
- Pasos de Mitigación:
- Analizar y validar adecuadamente los parámetros de correo electrónico del lado del servidor.
- Utilizar declaraciones preparadas o consultas parametrizadas para prevenir ataques de inyección.
- Referencias:
- https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be
- https://ninadmathpati.com/2019/08/17/how-i-was-able-to-earn-1000-with-just-10-minutes-of-bug-bounty/
- https://twitter.com/HusseiN98D/status/1254888748216655872
Cambio de Correo Electrónico y Contraseña de Cualquier Usuario a Través de Parámetros de API
- Los atacantes pueden modificar los parámetros de correo electrónico y contraseña en las solicitudes de API para cambiar las credenciales de la cuenta.
php
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})
- Pasos de Mitigación:
- Asegurar una validación estricta de parámetros y verificaciones de autenticación.
- Implementar un registro y monitoreo robustos para detectar y responder a actividades sospechosas.
- Referencia:
- Toma de Control Completa de Cuenta a través de Manipulación de Parámetros API
Sin Limitación de Tasa: Bombardeo de Correos Electrónicos
- La falta de limitación de tasa en las solicitudes de restablecimiento de contraseña puede llevar a un bombardeo de correos electrónicos, abrumando al usuario con correos de restablecimiento.
- Pasos de Mitigación:
- Implementar limitación de tasa basada en la dirección IP o cuenta de usuario.
- Usar desafíos CAPTCHA para prevenir abusos automatizados.
- Referencias:
- Informe de HackerOne 280534
Descubrir Cómo se Genera el Token de Restablecimiento de Contraseña
- Entender el patrón o método detrás de la generación de tokens puede llevar a predecir o forzar tokens. Algunas opciones:
- Basado en Timestamp
- Basado en el UserID
- Basado en el correo electrónico del Usuario
- Basado en Nombre y Apellido
- Basado en Fecha de Nacimiento
- Basado en Criptografía
- Pasos de Mitigación:
- Usar métodos criptográficos fuertes para la generación de tokens.
- Asegurar suficiente aleatoriedad y longitud para prevenir la predictibilidad.
- Herramientas: Usar Burp Sequencer para analizar la aleatoriedad de los tokens.
UUID Adivinable
- Si los UUIDs (versión 1) son adivinables o predecibles, los atacantes pueden forzarlos para generar tokens de restablecimiento válidos. Verifique:
- Pasos de Mitigación:
- Usar GUID versión 4 para aleatoriedad o implementar medidas de seguridad adicionales para otras versiones.
- Herramientas: Usar guidtool para analizar y generar GUIDs.
Manipulación de Respuesta: Reemplazar Respuesta Mala con Buena
- Manipulando respuestas HTTP para eludir mensajes de error o restricciones.
- Pasos de Mitigación:
- Implementar verificaciones del lado del servidor para asegurar la integridad de la respuesta.
- Usar canales de comunicación seguros como HTTPS para prevenir ataques de intermediarios.
- Referencia:
- Error Crítico en Evento de Recompensa por Errores en Vivo
Uso de Token Expirado
- Probar si los tokens expirados aún pueden ser utilizados para el restablecimiento de contraseña.
- Pasos de Mitigación:
- Implementar políticas estrictas de expiración de tokens y validar la expiración del token del lado del servidor.
Fuerza Bruta del Token de Restablecimiento de Contraseña
- Intentando forzar el token de restablecimiento usando herramientas como Burpsuite e IP-Rotator para eludir límites de tasa basados en IP.
- Pasos de Mitigación:
- Implementar mecanismos robustos de limitación de tasa y bloqueo de cuentas.
- Monitorear actividades sospechosas indicativas de ataques de fuerza bruta.
Intenta Usar Tu Token
- Probar si el token de restablecimiento del atacante puede ser utilizado junto con el correo electrónico de la víctima.
- Pasos de Mitigación:
- Asegurar que los tokens estén vinculados a la sesión del usuario u otros atributos específicos del usuario.
Invalidación de Sesión en Cierre de Sesión/Restablecimiento de Contraseña
- Asegurar que las sesiones se invaliden cuando un usuario cierra sesión o restablece su contraseña.
- Pasos de Mitigación:
- Implementar una gestión adecuada de sesiones, asegurando que todas las sesiones se invaliden al cerrar sesión o restablecer la contraseña.
Invalidación de Sesión en Cierre de Sesión/Restablecimiento de Contraseña
- Los tokens de restablecimiento deben tener un tiempo de expiración después del cual se vuelven inválidos.
- Pasos de Mitigación:
- Establecer un tiempo de expiración razonable para los tokens de restablecimiento y hacer cumplir estrictamente esto del lado del servidor.
Referencias
tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.