Account Takeover

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Problema de autorización

Se debe intentar cambiar el email de una cuenta y el proceso de confirmación debe ser examinado. Si se considera débil, el email debe cambiarse al del objetivo y luego confirmarse.

Problema de Unicode Normalization

  1. La cuenta de la víctima objetivo victim@gmail.com
  2. Se debe crear una cuenta usando Unicode\
    por ejemplo: vićtim@gmail.com

Como se explica en this talk, el ataque anterior también podría realizarse abusando de proveedores de identidad de terceros:

  • Crear una cuenta en el proveedor de identidad tercero con un email similar al de la víctima usando algún carácter unicode (vićtim@company.com).
  • El proveedor tercero no debería verificar el email
  • Si el proveedor de identidad verifica el email, quizás 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 de la víctima normaliza el nombre de dominio.
  • Login vía este proveedor de identidad en la plataforma de la víctima que debería normalizar el carácter unicode y permitirte acceder a la cuenta de la víctima.

Para más detalles, consulte el documento sobre Unicode Normalization:

Unicode Normalization

Reusing Reset Token

Si el sistema objetivo permite que el reset link sea reutilizado, se deben hacer esfuerzos para encontrar más reset links usando herramientas como gau, wayback, o scan.io.

Pre Account Takeover

  1. El email de la víctima debe usarse para registrarse en la plataforma y debe establecerse una contraseña (se debe intentar confirmarla, aunque no tener acceso a los emails de la víctima puede hacer esto imposible).
  2. Se debe esperar hasta que la 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 de la víctima.

CORS Misconfiguration to Account Takeover

Si la página contiene CORS misconfigurations podrías ser capaz de robar información sensible del usuario para takeover his account o hacer que cambie información de autenticación con el mismo propósito:

CORS - Misconfigurations & Bypass

Csrf to Account Takeover

Si la página es vulnerable a CSRF podrías lograr que el usuario modifique su contraseña, email o la autenticación para luego poder acceder a ella:

CSRF (Cross Site Request Forgery)

XSS to Account Takeover

Si encuentras una XSS en la aplicación podrías ser capaz de robar cookies, local storage, o información de la página web que podría permitirte takeover the account:

XSS (Cross Site Scripting)

Same Origin + Cookies

Si encuentras una XSS limitada o un subdomain take over, podrías manipular las cookies (fixating them por ejemplo) para intentar comprometer la cuenta de la víctima:

Cookies Hacking

Atacando el mecanismo de Password Reset

Reset/Forgotten Password Bypass

Security-question resets that trust client-supplied usernames

Si un flujo de “update security questions” acepta un parámetro username aunque el llamador ya esté autenticado, puedes sobrescribir los datos de recuperación de cualquier cuenta (incluyendo admins) porque el backend típicamente ejecuta UPDATE ... WHERE user_name = ? con tu valor no confiable. El patrón es:

  1. Inicia sesión con un usuario desechable y captura la cookie de sesión.
  2. Envía el nombre de usuario de la víctima junto con nuevas respuestas a través del formulario de restablecimiento.
  3. Autentícate inmediatamente mediante el endpoint de security-question login usando las respuestas que acabas de inyectar para heredar los privilegios de la víctima.
POST /reset.php HTTP/1.1
Host: file.era.htb
Cookie: PHPSESSID=<low-priv>
Content-Type: application/x-www-form-urlencoded

username=admin_ef01cab31aa&new_answer1=A&new_answer2=B&new_answer3=C

Anything gated by the victim’s $_SESSION context (admin dashboards, dangerous stream-wrapper features, etc.) is now exposed without touching the real answers.

Enumerated usernames can then be targeted via the overwrite technique above or reused against ancillary services (FTP/SSH password spraying).

Response Manipulation

If the authentication response could be reduced to a simple boolean just try to change false to true and see if you get any access.

OAuth to Account takeover

OAuth to Account takeover

Host Header Injection

  1. La cabecera Host se modifica tras iniciar una petición de restablecimiento de contraseña.
  2. La cabecera proxy X-Forwarded-For se cambia a attacker.com.
  3. Las cabeceras Host, Referrer y Origin se cambian simultáneamente a attacker.com.
  4. Tras iniciar un restablecimiento de contraseña y optar por reenviar el correo, se emplean las tres técnicas mencionadas.

Response Manipulation

  1. Code Manipulation: El código de estado se cambia a 200 OK.
  2. Code and Body Manipulation:
  • El código de estado se cambia a 200 OK.
  • El body de la respuesta se modifica a {"success":true} o a un objeto vacío {}.

Estas técnicas de manipulación son efectivas en escenarios donde se utiliza JSON para el envío y recepción de datos.

Change email of current session

From this report:

  • Attacker requests to change his email with a new one
  • Attacker receives a link to confirm the change of the email
  • Attacker send the victim the link so he clicks it
  • The victims email is changed to the one indicated by the attacker
  • The attack can recover the password and take over the account

This also happened in this report.

Bypass email verification for Account Takeover

  • El atacante inicia sesión con attacker@test.com y verifica el email al registrarse.
  • El atacante cambia el email verificado a victim@test.com (no hay verificación secundaria al cambiar el email)
  • Ahora el sitio permite a victim@test.com iniciar sesión y hemos eludido la verificación de email del usuario víctima.

Old Cookies

As explained in this post, it was possible to login into an account, save the cookies as an authenticated user, logout, and then login again.
With the new login, although different cookies might be generated the old ones became to work again.

References

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks