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, (^^ゞ