hacktricks/pentesting-web/account-takeover.md

150 lines
8.7 KiB
Markdown

# Toma de Control de Cuenta
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* 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.
</details>
{% endhint %}
## **Problema de Autorización**
Se debe intentar cambiar el correo electrónico de una cuenta, y el proceso de confirmación **debe ser examinado**. Si se encuentra **débil**, el correo electrónico debe ser cambiado al del víctima previsto y luego confirmado.
## **Problema de Normalización de Unicode**
1. La cuenta del víctima previsto `victim@gmail.com`
2. Se debe crear una cuenta usando Unicode\
por ejemplo: `vićtim@gmail.com`
Como se explicó en [**esta charla**](https://www.youtube.com/watch?v=CiIyaZ3x49c), el ataque anterior también podría realizarse abusando de proveedores de identidad de terceros:
* Crear una cuenta en el proveedor de identidad de terceros con un correo electrónico similar al del víctima usando algún carácter unicode (`vićtim@company.com`).
* El proveedor de terceros no debería verificar el correo electrónico.
* Si el proveedor de identidad verifica el correo electrónico, tal vez puedas atacar la parte del dominio como: `victim@ćompany.com` y registrar ese dominio y esperar que el proveedor de identidad genere la versión ascii del dominio mientras la plataforma del víctima normaliza el nombre de dominio.
* Iniciar sesión a través de este proveedor de identidad en la plataforma del víctima que debería normalizar el carácter unicode y permitirte acceder a la cuenta del víctima.
Para más detalles, consulta el documento sobre Normalización de Unicode:
{% content-ref url="unicode-injection/unicode-normalization.md" %}
[unicode-normalization.md](unicode-injection/unicode-normalization.md)
{% endcontent-ref %}
## **Reutilización de Token de Restablecimiento**
Si el sistema objetivo permite que el **enlace de restablecimiento sea reutilizado**, se deben hacer esfuerzos para **encontrar más enlaces de restablecimiento** utilizando herramientas como `gau`, `wayback` o `scan.io`.
## **Pre Toma de Control de Cuenta**
1. El correo electrónico del víctima debe ser utilizado para registrarse en la plataforma, y se debe establecer una contraseña (se debe intentar confirmarla, aunque carecer de acceso a los correos del víctima podría hacer esto imposible).
2. Se debe esperar hasta que el víctima se registre usando OAuth y confirme la cuenta.
3. Se espera que el registro regular sea confirmado, permitiendo el acceso a la cuenta del víctima.
## **Configuración Incorrecta de CORS para Toma de Control de Cuenta**
Si la página contiene **configuraciones incorrectas de CORS**, podrías ser capaz de **robar información sensible** del usuario para **tomar el control de su cuenta** o hacer que cambie la información de autenticación con el mismo propósito:
{% content-ref url="cors-bypass.md" %}
[cors-bypass.md](cors-bypass.md)
{% endcontent-ref %}
## **CSRF para Toma de Control de Cuenta**
Si la página es vulnerable a CSRF, podrías ser capaz de hacer que el **usuario modifique su contraseña**, correo electrónico o autenticación para que luego puedas acceder a ello:
{% content-ref url="csrf-cross-site-request-forgery.md" %}
[csrf-cross-site-request-forgery.md](csrf-cross-site-request-forgery.md)
{% endcontent-ref %}
## **XSS para Toma de Control de Cuenta**
Si encuentras un XSS en la aplicación, podrías ser capaz de robar cookies, almacenamiento local o información de la página web que podría permitirte tomar el control de la cuenta:
{% content-ref url="xss-cross-site-scripting/" %}
[xss-cross-site-scripting](xss-cross-site-scripting/)
{% endcontent-ref %}
## **Misma Origen + Cookies**
Si encuentras un XSS limitado o una toma de control de subdominio, podrías jugar con las cookies (fijándolas, por ejemplo) para intentar comprometer la cuenta del víctima:
{% content-ref url="hacking-with-cookies/" %}
[hacking-with-cookies](hacking-with-cookies/)
{% endcontent-ref %}
## **Atacando el Mecanismo de Restablecimiento de Contraseña**
{% content-ref url="reset-password.md" %}
[reset-password.md](reset-password.md)
{% endcontent-ref %}
## **Manipulación de Respuesta**
Si la respuesta de autenticación podría ser **reducida a un simple booleano, solo intenta cambiar falso a verdadero** y ver si obtienes acceso.
## OAuth para Toma de Control de Cuenta
{% content-ref url="oauth-to-account-takeover.md" %}
[oauth-to-account-takeover.md](oauth-to-account-takeover.md)
{% endcontent-ref %}
## Inyección de Encabezado Host
1. El encabezado Host se modifica tras la iniciación de una solicitud de restablecimiento de contraseña.
2. El encabezado proxy `X-Forwarded-For` se altera a `attacker.com`.
3. Los encabezados Host, Referer y Origin se cambian simultáneamente a `attacker.com`.
4. Después de iniciar un restablecimiento de contraseña y optar por reenviar el correo, se emplean los tres métodos mencionados anteriormente.
## Manipulación de Respuesta
1. **Manipulación de Código**: El código de estado se altera a `200 OK`.
2. **Manipulación de Código y Cuerpo**:
* El código de estado se cambia a `200 OK`.
* El cuerpo de la respuesta se modifica a `{"success":true}` o un objeto vacío `{}`.
Estas técnicas de manipulación son efectivas en escenarios donde se utiliza JSON para la transmisión y recepción de datos.
## Cambiar correo electrónico de la sesión actual
De [este informe](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea):
* El atacante solicita cambiar su correo electrónico por uno nuevo.
* El atacante recibe un enlace para confirmar el cambio del correo electrónico.
* El atacante envía al víctima el enlace para que lo haga clic.
* El correo electrónico del víctima se cambia al indicado por el atacante.
* El atacante puede recuperar la contraseña y tomar el control de la cuenta.
Esto también ocurrió en [**este informe**](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea).
### Cookies Antiguas
Como se explicó [**en esta publicación**](https://medium.com/@niraj1mahajan/uncovering-the-hidden-vulnerability-how-i-found-an-authentication-bypass-on-shopifys-exchange-cc2729ea31a9), fue posible iniciar sesión en una cuenta, guardar las cookies como un usuario autenticado, cerrar sesión y luego iniciar sesión nuevamente.\
Con el nuevo inicio de sesión, aunque se podrían generar cookies diferentes, las antiguas comenzaron a funcionar nuevamente.
## Referencias
* [https://infosecwriteups.com/firing-8-account-takeover-methods-77e892099050](https://infosecwriteups.com/firing-8-account-takeover-methods-77e892099050)
* [https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* 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.
</details>
{% endhint %}