Account Takeover

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

認可の問題

アカウントのメールアドレスを変更できるか試し、確認プロセスを必ず確認する。もし脆弱であれば、メールアドレスをターゲット(被害者)のものに変更し、確認を完了させる。

Unicode 正規化の問題

  1. ターゲット(被害者)のアカウント victim@gmail.com
  2. Unicode を使ってアカウントを作成する。例えば: vićtim@gmail.com

this talk で説明されているように、前述の攻撃はサードパーティの identity providers を悪用しても行える:

  • サードパーティの identity に対して、被害者に類似したメールを Unicode 文字で使ってアカウントを作成する(例: vićtim@company.com)。
  • サードパーティプロバイダがメールを検証しないこと。
  • もし identity provider がメールを検証するなら、ドメイン部分を攻撃できるかもしれない:victim@ćompany.com のようにしてそのドメインを登録し、identity provider がドメインの ASCII 版を生成し、被害者のプラットフォームがドメイン名を正規化することを期待する。
  • この identity provider 経由で被害者プラットフォームにログインすると、プラットフォームが Unicode 文字を正規化して被害者アカウントへアクセスできる可能性がある。

詳細は Unicode Normalization に関するドキュメントを参照する:

Unicode Normalization

リセットトークンの再利用

ターゲットシステムがreset link を再利用可能にしている場合、gauwaybackscan.io といったツールを使ってさらに多くの reset link を見つける努力をすべきである。

事前の Account Takeover

  1. 被害者のメールを使ってプラットフォームにサインアップし、パスワードを設定する(確認を試みるが、被害者のメールにアクセスできない場合は不可能なことがある)。
  2. 被害者が OAuth を使ってサインアップし、アカウントを確認するまで待つ。
  3. 通常のサインアップが確認されることを期待し、被害者アカウントにアクセスする。

CORS Misconfiguration による Account Takeover

ページにCORS misconfigurationsがある場合、ユーザから機密情報を盗むことでアカウントを乗っ取る、あるいは同じ目的で認証情報を変更させることができる可能性がある:

CORS - Misconfigurations & Bypass

Csrf による Account Takeover

ページが CSRF に対して脆弱であれば、ユーザにパスワード、メール、または認証情報を変更させ、その後アクセスできるようにすることが可能である:

CSRF (Cross Site Request Forgery)

XSS による Account Takeover

アプリケーションで XSS を見つけた場合、cookies、local storage、またはウェブページ上の情報を盗んでアカウントを乗っ取れる可能性がある:

XSS (Cross Site Scripting)

Same Origin + Cookies

限定的な XSS やサブドメインの takeover を見つけた場合、cookies(例えば fixating など)を操作して被害者アカウントを侵害しようと試みることができる:

Cookies Hacking

パスワードリセット機構の攻撃

Reset/Forgotten Password Bypass

クライアントが提供した username を信頼する security-question リセット

“update security questions” フローが呼び出し元が既に認証済みであっても username パラメータを受け取る場合、バックエンドが典型的に UPDATE ... WHERE user_name = ? のようなクエリを untrusted な値で実行するため、任意のアカウントのリカバリデータ(管理者を含む)を上書きできる。パターンは次の通り:

  1. 使い捨てのユーザでログインしてセッションクッキーを取得する。
  2. リセットフォームを通じて被害者の username と新しい回答を送信する。
  3. 直ちに、先ほど注入した回答を使って security-question login endpoint で認証し、被害者の権限を引き継ぐ。
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.

列挙したユーザー名は、上記の overwrite technique を使って標的にするか、FTP/SSH などの補助サービスへの password spraying に再利用できます。

Response Manipulation

認証レスポンスが 単純なブール値に簡約できるなら、false を true に変更して アクセスできるか試してください。

OAuth to Account takeover

OAuth to Account takeover

Host Header Injection

  1. パスワードリセット要求を起動した後に Host ヘッダが修正される。
  2. X-Forwarded-For プロキシヘッダが attacker.com に書き換えられる。
  3. Host、Referrer、Origin ヘッダが同時に attacker.com に変更される。
  4. パスワードリセットを実行してメールの再送を選択した後、上記の3つの方法すべてが適用される。

Response Manipulation

  1. Code Manipulation: ステータスコードが 200 OK に変更される。
  2. Code and Body Manipulation:
  • ステータスコードが 200 OK に変更される。
  • レスポンスボディが {"success":true} または 空のオブジェクト {} に変更される。

これらの操作手法は、JSON がデータ送受信に使われている場面で有効です。

Change email of current session

From this report:

  • 攻撃者が自分のメールを新しいものに変更するようリクエストする
  • 攻撃者はメール変更の確認リンクを受け取る
  • 攻撃者はそのリンクを被害者に送信し、被害者がクリックするようにする
  • 被害者のメールは攻撃者が指定したものに変更される
  • 攻撃者はパスワードを回復してアカウントを乗っ取ることができる

This also happened in this report.

Bypass email verification for Account Takeover

  • 攻撃者は attacker@test.com でログインし、サインアップ時にメールを検証する。
  • 攻撃者は検証済みメールを victim@test.com に変更する(メール変更時の再検証がない)
  • これによりサイトは victim@test.com によるログインを許可し、被害者ユーザーのメール検証をバイパスできる。

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

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする