Hello there, ('ω')ノ
🎯 目的
このラボでは、ユーザーの入力がHTML属性内に反映され、山括弧(<
、>
)がHTMLエンコードされている状況で、属性にイベントハンドラを挿入してJavaScriptを実行するXSS攻撃を行います。
🛠️ 脆弱性の概要
- 入力は以下のような形でHTMLに反映されます:
<input type="text" value="ユーザー入力">
<
と>
はエンコードされるため、<script>
などは使えません。- しかし、クォート(
"
)はエスケープされていない場合、属性を閉じて新しい属性を挿入できます。
🚨 攻撃手順
- 任意の文字列(例:
test
)を検索ボックスに入力。 - Burp Suite でリクエストをキャプチャし、Repeater に送信。
- 検索語を次のように変更:
"onmouseover="alert(1)
- その結果、HTMLは次のように構築されます:
<input type="text" value="" onmouseover="alert(1)">
- この要素にマウスを重ねると
alert(1)
が実行されます。
💡 ポイント
- クォートがそのまま使える場合は、属性終了+イベント属性の追加でXSSが可能。
onmouseover
のようなユーザー操作に反応するイベントハンドラが便利。autofocus
やonfocus
を併用すれば、自動的にトリガーされるXSSも可能。
✅ まとめ
- 山括弧がエンコードされていても、属性内に挿入できるXSSは成立可能。
- 重要なのは、どの文脈(コンテキスト)で反映されているかを正確に把握すること。
- XSS攻撃の成功可否は、HTML構造とブラウザの動作に強く依存します。
Best regards, (^^ゞ