Shikata Ga Nai

Private? There is no such things.

LAB: 属性内に反映されたXSS(HTMLエンコードされた山括弧)

Hello there, ('ω')ノ

🎯 目的

このラボでは、ユーザーの入力がHTML属性内に反映され、山括弧(<>)がHTMLエンコードされている状況で、属性にイベントハンドラを挿入してJavaScriptを実行するXSS攻撃を行います。


🛠️ 脆弱性の概要

  • 入力は以下のような形でHTMLに反映されます:
<input type="text" value="ユーザー入力">
  • <> はエンコードされるため、<script>などは使えません。
  • しかし、クォート(")はエスケープされていない場合、属性を閉じて新しい属性を挿入できます。

🚨 攻撃手順

  1. 任意の文字列(例:test)を検索ボックスに入力。
  2. Burp Suite でリクエストをキャプチャし、Repeater に送信。
  3. 検索語を次のように変更:
"onmouseover="alert(1)
  1. その結果、HTMLは次のように構築されます:
<input type="text" value="" onmouseover="alert(1)">
  1. この要素にマウスを重ねると alert(1) が実行されます。

💡 ポイント

  • クォートがそのまま使える場合は、属性終了+イベント属性の追加でXSSが可能。
  • onmouseover のようなユーザー操作に反応するイベントハンドラが便利。
  • autofocusonfocus を併用すれば、自動的にトリガーされるXSSも可能。

✅ まとめ

  • 山括弧がエンコードされていても、属性内に挿入できるXSSは成立可能
  • 重要なのは、どの文脈(コンテキスト)で反映されているかを正確に把握すること。
  • XSS攻撃の成功可否は、HTML構造とブラウザの動作に強く依存します。

Best regards, (^^ゞ