Hello there, ('ω')ノ
🔍 脆弱性のポイント
- ユーザーの入力が JavaScriptコード中の文字列リテラル に埋め込まれています。
<
や>
は<
や>
に変換されており、HTMLタグを直接挿入するXSSは防がれています。- しかし、シングルクォート
'
や セミコロン;
などはサニタイズされておらず、文字列から脱出してコードを実行できます。
🛠️ 攻略手順(Burp Suite利用)
対象ページの検索ボックスに適当な文字列を入力して「Search」をクリック。
Burp SuiteでHTTPリクエストをインターセプトし、Repeaterに送信。
応答内容に、自分の入力がJavaScript文字列内に含まれていることを確認(例:
var search = 'abc123';
)。次のペイロードに入力を置き換える:
'-alert(1)-'
- リクエストを送信して、ブラウザ上で結果を確認。アラートが表示されれば成功です。
✅ 解説とコツ
'-alert(1)-'
はJavaScript文字列を閉じ、alert(1)
を実行したあと、文法エラーにならないように無意味な文字列で終わらせています。//
や/* */
を使って残りのコードをコメントアウトする方法も有効です。- このように、HTMLエンコードだけではJavaScriptコンテキストのXSSを防げないことがあります。
🧠 ポイントまとめ
- JavaScript内でのユーザー入力は、必ず適切にエスケープすべき。
- HTMLタグをブロックしても、スクリプト内XSSは防げません。
- このような反射型XSSは、JavaScriptコンテキストの理解が重要です。
Best regards, (^^ゞ