Hello there, ('ω')ノ
🔍 このラボの目的
このラボでは、DOMベースのクロスサイトスクリプティング(XSS)脆弱性を突き、alert
関数を実行する必要があります。
このアプリは、URLのクエリパラメータ(location.search
)の値をJavaScriptで取得し、それを document.write()
でHTMLに書き出しています。
🧠 攻撃のポイント
location.search
(例:?search=文字列
)の値が直接document.write()
に渡されている。- この値を悪意のあるスクリプトに置き換えることで、HTML要素の一部としてJavaScriptを実行可能。
document.write
はHTML構文として解釈されるため、タグの中にJSイベント(例:onload
)を挿入できる。
✅ 攻略手順
- 任意の文字列を検索ボックスに入力し、送信します(例:
test
)。 - DevTools(F12)で要素を検査し、次のようなHTMLが出力されていることを確認します:
<img src="test">
- クエリパラメータに次のようなペイロードを入力してXSSを実行します:
?search="><svg onload=alert(1)>
- 最終的なURLは以下のようになります:
https://YOUR-LAB-ID.web-security-academy.net/?search="><svg onload=alert(1)>
- このURLをブラウザで開くと、アラートが発生してラボクリアです。
🔒 対策(実際の開発では)
- クライアント側でユーザー入力を処理する前にバリデーションを行う。
document.write
の使用を避け、DOM操作はtextContent
やsetAttribute
など安全なメソッドを使う。
Best regards, (^^ゞ