Account Takeover

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Authorization Issue

Należy spróbować zmienić email konta i skontrolować proces potwierdzania. Jeśli okaże się on słaby, email powinien zostać zmieniony na adres docelowej ofiary i potwierdzony.

Unicode Normalization Issue

  1. Konto docelowej ofiary victim@gmail.com
  2. Należy utworzyć konto używając Unicode
    na przykład: vićtim@gmail.com

Jak wyjaśniono w this talk, poprzedni atak można również przeprowadzić nadużywając dostawców tożsamości stron trzecich:

  • Utwórz konto u dostawcy tożsamości stron trzecich z adresem e-mail podobnym do ofiary, używając jakiegoś znaku Unicode (vićtim@company.com).
  • Dostawca stron trzecich nie powinien weryfikować adresu e-mail
  • Jeśli dostawca tożsamości weryfikuje e-mail, być może możesz zaatakować część domenową, np. victim@ćompany.com i zarejestrować tę domenę oraz mieć nadzieję, że dostawca tożsamości wygeneruje ascii wersję domeny, podczas gdy platforma ofiary znormalizuje nazwę domeny.
  • Zaloguj się przez tego dostawcę tożsamości w platformie ofiary, która powinna znormalizować znak unicode i pozwolić ci uzyskać dostęp do konta ofiary.

For further details, refer to the document on Unicode Normalization:

Unicode Normalization

Reusing Reset Token

Jeżeli system docelowy pozwala na ponowne użycie linku do resetu, należy spróbować odnaleźć więcej linków resetujących używając narzędzi takich jak gau, wayback lub scan.io.

Pre Account Takeover

  1. Należy użyć e-maila ofiary do rejestracji na platformie i ustawić hasło (należy spróbować potwierdzić konto, choć brak dostępu do skrzynki ofiary może to uniemożliwić).
  2. Należy poczekać, aż ofiara zarejestruje się używając OAuth i potwierdzi konto.
  3. Zakłada się, że zwykła rejestracja zostanie potwierdzona, co pozwoli uzyskać dostęp do konta ofiary.

CORS Misconfiguration to Account Takeover

Jeśli strona zawiera CORS misconfigurations, możesz być w stanie ukraść wrażliwe informacje od użytkownika, aby przejąć jego konto lub zmusić go do zmiany informacji uwierzytelniających w tym samym celu:

CORS - Misconfigurations & Bypass

Csrf to Account Takeover

Jeśli strona jest podatna na CSRF, możesz być w stanie zmusić użytkownika do zmiany jego hasła, e-maila lub metod uwierzytelniania, abyś następnie uzyskał do niego dostęp:

CSRF (Cross Site Request Forgery)

XSS to Account Takeover

Jeśli znajdziesz XSS w aplikacji, możesz być w stanie ukraść cookies, local storage lub informacje ze strony, które pozwolą przejąć konto:

XSS (Cross Site Scripting)

  • Attribute-only reflected payloads on login pages can hook document.onkeypress, exfiltrate keystrokes through new Image().src, and steal credentials without submitting the form. See Attribute-only login XSS behind WAFs for a practical workflow.

Same Origin + Cookies

Jeśli znajdziesz ograniczony XSS lub subdomain take over, możesz manipulować cookies (np. ustawić je na stałe), aby spróbować skompromitować konto ofiary:

Cookies Hacking

Attacking Password Reset Mechanism

Reset/Forgotten Password Bypass

Security-question resets that trust client-supplied usernames

Jeśli flow “update security questions” przyjmuje parametr username mimo że wywołujący jest już uwierzytelniony, możesz nadpisać dane odzyskiwania dowolnego konta (w tym adminów), ponieważ backend typowo wykonuje UPDATE ... WHERE user_name = ? z twoją nieufną wartością. Schemat jest następujący:

  1. Zaloguj się przy użyciu konta jednorazowego i przechwyć cookie sesyjne.
  2. Prześlij nazwę użytkownika ofiary oraz nowe odpowiedzi przez formularz resetu.
  3. Natychmiast uwierzytelnij się poprzez endpoint logowania po security-question używając odpowiedzi, które właśnie wstrzyknąłeś, aby przejąć uprawnienia ofiary.
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

Wszystko chronione przez kontekst $_SESSION of the victim (admin dashboards, dangerous stream-wrapper features, etc.) jest teraz odsłonięte bez modyfikowania prawdziwych odpowiedzi.

Wyenumerowane nazwy użytkowników mogą być wówczas celem za pomocą overwrite technique powyżej lub ponownie użyte przeciwko usługom pomocniczym (FTP/SSH password spraying).

Response Manipulation

Jeżeli odpowiedź uwierzytelniająca może być zredukowana do prostego booleanu, po prostu spróbuj zmienić false na true i sprawdź, czy uzyskasz dostęp.

OAuth to Account takeover

OAuth to Account takeover

Host Header Injection

  1. The Host header is modified following a password reset request initiation.
  2. The X-Forwarded-For proxy header is altered to attacker.com.
  3. The Host, Referrer, and Origin headers are simultaneously changed to attacker.com.
  4. After initiating a password reset and then opting to resend the mail, all three of the aforementioned methods are employed.

Response Manipulation

  1. Code Manipulation: kod statusu jest zmieniony na 200 OK.
  2. Code and Body Manipulation:
  • kod statusu jest zmieniony na 200 OK.
  • ciało odpowiedzi jest zmodyfikowane do {"success":true} lub pustego obiektu {}.

Te techniki manipulacji są skuteczne w scenariuszach, gdzie JSON jest wykorzystywany do przesyłania i odbioru danych.

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

  • Attacker logins with attacker@test.com and verifies email upon signup.
  • Attacker changes verified email to victim@test.com (no secondary verification on email change)
  • Now the website allows victim@test.com to login and we have bypassed email verification of victim user.

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.

Trusted device cookies + batch API leakage

Długotrwałe identyfikatory urządzeń, które gate recovery, mogą zostać skradzione, gdy batch API pozwala skopiować nieczytelne subresponses do zapisywalnych sinks.

  • Identify a trusted-device cookie (SameSite=None, long-lived) used to relax recovery checks.
  • Find a first-party endpoint that returns that device ID in JSON (e.g., an OAuth code exchange returning machine_id) but is not readable cross-origin.
  • Use a batch/chained API that allows referencing earlier subresponses ({result=name:$.path}) and writing them to an attacker-visible sink (page post, upload-by-URL, etc.). Example with Facebook Graph API:
POST https://graph.facebook.com/
batch=[
{"method":"post","omit_response_on_success":0,"relative_url":"/oauth/access_token?client_id=APP_ID%26redirect_uri=REDIRECT_URI","body":"code=SINGLE_USE_CODE","name":"leaker"},
{"method":"post","relative_url":"PAGE_ID/posts","body":"message={result=leaker:$.machine_id}"}
]
access_token=PAGE_ACCESS_TOKEN&method=post
  • Załaduj batch URL w ukrytym <iframe>, tak aby ofiara wysłała trusted-device cookie; odniesienie JSON-path kopiuje machine_id do posta kontrolowanego przez atakującego, nawet jeśli odpowiedź OAuth jest nieczytelna dla strony.
  • Replay: ustaw skradziony device cookie w nowej sesji. Recovery traktuje teraz przeglądarkę jako trusted, często ujawniając słabsze „no email/phone” flows (np. automated document upload), które pozwalają dodać attacker email bez password lub 2FA.

Referencje

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks