mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-15 01:17:36 +00:00
150 lines
8.7 KiB
Markdown
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 %}
|