Hello there, ('ω')ノ
🎯 攻撃の対象:「HTMLタグ間のテキスト」コンテキストとは?
XSSの脆弱性調査中、攻撃対象の入力値がHTML要素のタグとタグの間のテキストとして出力されるケースがあります。
例:
<p>こんにちは、[ユーザー入力]</p>
このような出力場所を「HTMLタグ間のコンテキスト」と呼びます。この場合、新しいHTMLタグを挿入することでJavaScriptを実行するタイプのXSSが有効です。
🧨 よく使われるXSSペイロード
① スクリプトタグを直接挿入
<script>alert(document.domain)</script>
- 最も基本的な攻撃。
document.domain
を表示することで、スクリプトが実行されていることを確認できます。
② イメージタグ+onerrorイベント
<img src=1 onerror=alert(1)>
- ブラウザが画像の読み込みに失敗すると
onerror
イベントが発火してalert()
を実行。 <script>
タグがフィルタリングされている場合でも有効。
🧪 テスト手順の例
- 入力フォームまたはURLパラメータに、上記ペイロードを入力
- その入力がページ上に エスケープされずに表示 されていれば、XSS成功
- ブラウザ上で
alert()
ダイアログが表示されればOK
✅ ポイント:エスケープ処理がなければXSS成立
HTMLタグ間に挿入された入力が、
<
,>
のようなタグ記号をそのまま出力- JavaScriptのイベント属性やタグがフィルターされていない
こうした場合にXSSが成功します。
📌 まとめ
「HTMLタグ間のコンテキスト」におけるXSSは、新しいHTML要素(特に <script>
や <img>
)を注入してJavaScriptを実行させるのが基本です。
おすすめペイロード:
<script>alert(1)</script>
<img src=1 onerror=alert(1)>
これらを使ってアプリケーションがどのように入力を扱っているかを検証し、XSSの有無をチェックしましょう。
Best regards, (^^ゞ