Account Takeover

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Yetkilendirme Sorunu

Bir hesabın e-posta adresinin değiştirilmesi denenmeli ve onay süreci incelenmelidir. Zayıf olduğu tespit edilirse, e-posta hedeflenen kurbanın e-postasına değiştirilip onaylanmalıdır.

Unicode Normalization Sorunu

  1. Hedef kurbanın hesabı victim@gmail.com
  2. Unicode kullanarak bir hesap oluşturulmalı
    örneğin: vićtim@gmail.com

this talk bölümünde açıklandığı gibi, önceki saldırı üçüncü taraf kimlik sağlayıcıları kötüye kullanılarak da yapılabilir:

  • Üçüncü taraf kimlik sağlayıcısında kurbanla benzer bir e-postayla unicode karakter kullanarak bir hesap oluşturun (vićtim@company.com).
  • Üçüncü taraf sağlayıcı e-postayı doğrulamamalıdır.
  • Eğer identity provider e-postayı doğruluyorsa, domain kısmına saldırmayı deneyebilirsiniz, örneğin: victim@ćompany.com ve o domain’i kaydederek identity provider’ın domainin ascii versiyonunu üretmesini ve hedef platformun domain adını normalize etmesini umabilirsiniz.
  • Kurban platformunda bu identity provider ile giriş yapın; platform unicode karakterini normalize etmeli ve hesabına erişmenizi sağlamalıdır.

Detaylar için Unicode Normalization belgesine bakın:

Unicode Normalization

Reset Token’ı Yeniden Kullanma

Hedef sistem reset link’in yeniden kullanılmasına izin veriyorsa, gau, wayback veya scan.io gibi araçları kullanarak daha fazla reset link bulmaya çalışılmalıdır.

Pre Account Takeover

  1. Kurbanın e-postası kullanılarak platforma kayıt olunmalı ve bir parola belirlenmelidir (onay denemesi yapılmalı; ancak kurbanın e-postalarına erişim yoksa bu imkansız olabilir).
  2. Kurbanın OAuth ile kayıt olup hesabı onaylaması beklenmelidir.
  3. Normal signup onaylanırsa, kurbanın hesabına erişim mümkün olabilir.

CORS Misconfiguration to Account Takeover

Sayfada CORS misconfigurations bulunuyorsa, kullanıcıdan hassas bilgileri çalabilir ve hesabını ele geçirmek veya aynı amaçla kimlik bilgilerini değiştirmesini sağlamak mümkün olabilir:

CORS - Misconfigurations & Bypass

Csrf to Account Takeover

Sayfa CSRF’ye karşı savunmasızsa, kullanıcının şifresini, e-postasını veya kimlik doğrulamasını değiştirmesini sağlayarak sonrasında hesaba erişebilirsiniz:

CSRF (Cross Site Request Forgery)

XSS to Account Takeover

Uygulamada bir XSS bulursanız, çerezleri, local storage’ı veya sayfadan alacağınız bilgilerle hesabı ele geçirmek mümkün olabilir:

XSS (Cross Site Scripting)

  • Giriş sayfalarındaki sadece attribute içeren reflected payload’lar document.onkeypress’i hooklayabilir, tuş vuruşlarını new Image().src ile exfiltrate edebilir ve formu göndermeden kimlik bilgilerini çalabilir. Pratik bir iş akışı için bkz. Attribute-only login XSS behind WAFs.

Same Origin + Cookies

Sınırlı bir XSS veya bir subdomain takeover bulursanız, çerezlerle oynayarak (örneğin fixate ederek) kurban hesabını ele geçirmeyi deneyebilirsiniz:

Cookies Hacking

Attacking Password Reset Mechanism

Reset/Forgotten Password Bypass

İstemci tarafından sağlanan kullanıcı adlarına güvenen güvenlik sorusu sıfırlamaları

Eğer “update security questions” akışı, çağıran zaten authenticate olmuş olsa bile bir username parametresi alıyorsa, backend tipik olarak UPDATE ... WHERE user_name = ? şeklinde güvenilmez değerinizi kullanacağından herhangi bir hesabın kurtarma verisini (yöneticiler dahil) üzerine yazabilirsiniz. Yöntem şöyledir:

  1. Geçici bir kullanıcı ile giriş yapın ve session cookie’sini yakalayın.
  2. Reset formu ile kurbanın kullanıcı adını ve yeni cevapları gönderin.
  3. Hemen ardından güvenlik sorusu login endpoint’inden az önce enjekte ettiğiniz cevapları kullanarak authenticate olun ve kurbanın ayrıcalıklarını devralın.
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. 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: The status code is altered to 200 OK.
  2. Code and Body Manipulation:
  • The status code is changed to 200 OK.
  • The response body is modified to {"success":true} or an empty object {}.

These manipulation techniques are effective in scenarios where JSON is utilized for data transmission and receipt.

Mevcut oturumun e-postasını değiştirme

From this report:

  • Saldırgan yeni bir e-posta ile e-postasını değiştirme isteği gönderir
  • Saldırgan e-posta değişikliğini onaylamak için bir bağlantı alır
  • Saldırgan bağlantıyı mağdura gönderir ve mağdur tıklar
  • Mağdurun e-postası saldırganın belirttiği e-posta ile değiştirilir
  • Saldırgan parola kurtarmayı gerçekleştirip hesabı ele geçirebilir

This also happened in this report.

Bypass email verification for Account Takeover

  • Saldırgan attacker@test.com ile giriş yapar ve signup sırasında e-postasını doğrular.
  • Saldırgan doğrulanmış e-postayı victim@test.com olarak değiştirir (e-posta değişikliğinde ikinci bir doğrulama yok).
  • Artık site victim@test.com ile girişe izin verir ve mağdur kullanıcının e-posta doğrulamasını atlatmış oluruz.

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

Long-lived device identifiers that gate recovery can be stolen when a batch API lets you copy unreadable subresponses into writable 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
  • Batch URL’yi gizli bir <iframe> içinde yükleyin; böylece kurban trusted-device cookie’yi gönderir; JSON-path referansı, OAuth yanıtı sayfa tarafından okunamasa bile machine_id’yi saldırgan kontrolündeki post’a kopyalar.
  • Replay: çalınan device cookie’yi yeni bir oturumda ayarlayın. Recovery artık tarayıcıyı trusted olarak kabul eder; bu genellikle parola veya 2FA olmadan saldırgana e-posta eklemeye izin veren daha zayıf “no email/phone” akışlarını (ör. otomatik belge yükleme) açığa çıkarır.

Referanslar

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin