Shikata Ga Nai

Private? There is no such things.

LAB: `Stored XSS` - `href属性`へのJavaScriptプロトコル注入

Hello there, ('ω')ノ

🎯 目的

このラボでは、コメント機能に格納型XSS(Stored XSS)の脆弱性が存在し、ユーザー名に設定されたリンクが href 属性内でそのまま反映される仕様を突きます。hrefjavascript: スキームを使ってスクリプトを実行し、XSSを達成します。


🧪 実施手順

  1. 自分のアカウントでログイン 提供された認証情報(例: wiener:peter)を使用してログインします。

  2. コメント投稿 → Burpで確認

    • 任意の投稿にコメントします。
    • 「Website」欄にランダムな英数字(例: test123)を入力。
    • リクエストを Burp Suite でインターセプトし、HTTP history から Repeater に送信。
  3. 反映確認

    • 投稿を閲覧し、Burp で該当リクエストを再度 Repeater に送信。
    • test123<a href="test123"> のように anchorタグの href 属性にそのまま反映されていることを確認。
  4. ペイロードの送信

    • 今度は「Website」欄に以下の JavaScript ペイロードを入力:

      javascript:alert(1)
      
  5. 確認と成功

    • コメント欄上部のユーザー名(リンク)をクリック。
    • アラートが実行されれば、XSS成功。
    • ラボが自動的に完了状態になります。

🧠 ポイント

  • href 属性が HTMLエンコードされたダブルクオートで囲まれていても、javascript: スキームがそのまま有効なら 閉じタグ不要でXSS可能
  • alert(1) によるPoCは安全で目視確認もしやすく、XSSの検証に最適です。

✅ まとめ

このラボを通して、「href属性に反映されるユーザー入力」が無防備である場合、どれだけ簡単にXSSが成立するかを学びました。JavaScriptスキームは典型的な攻撃手法なので、ユーザー入力に javascript: を使わせない対策が重要です。

Best regards, (^^ゞ