Hello there, ('ω')ノ
🎯 DOMベースXSSのテスト目的
DOM-based XSS(ドムベースクロスサイトスクリプティング)は、JavaScriptの動作を通じて発生する脆弱性のため、通常のHTMLソースを確認するだけでは検出できません。ここでは、Google Chromeなどのブラウザの開発者ツールやBurp Suiteを使った手動検査方法を紹介します。
🛠️ テスト手順:HTMLシンクの場合
ステップ 1:ソースにランダム文字列を注入
location.search などの入力可能な部分にランダムな文字列(例:abc123)を追加して、アプリケーション内で反映されるか確認します。
例:
https://vulnerable-website.com/page?input=abc123
ステップ 2:DOMを検索
Chromeの開発者ツール(F12)を開き、Ctrl+F で abc123 を検索して、DOM内のどこに表示されているかを確認します。
💡「ページのソースを表示」は意味がないので、必ず開発者ツールを使ってDOMを調べること!
ステップ 3:表示された場所のコンテキスト確認
- HTMLタグの中か?
- 属性の中か?
- JavaScriptコードの中か?
このコンテキストに合わせてペイロードを変更していきます。
💻 テスト手順:JavaScript実行シンクの場合
ステップ 1:JavaScriptコードを検索
Chromeの開発者ツールで Ctrl+Shift+F を押して、location や document.URL などを検索し、ソースがどこで使われているかを確認します。
ステップ 2:ブレークポイントの設定
JavaScriptコード内で location.search などが使用されている行にブレークポイントを設定して、処理の流れを追跡。
ステップ 3:変数の流れを追う
ソースが代入された変数を追跡し、eval(), innerHTML, document.write() などの危険なシンクに渡っているかを確認します。
🧪 DOM Invaderによる自動化
Burp Suiteのブラウザを使うと、DOM Invaderというツールが自動でDOM XSSの検査を行ってくれます。
DOM Invaderの特徴
- 自動でソースとシンクを追跡
- 値の流れを可視化
- 攻撃が成立する箇所をハイライト
DOM XSSのテストは複雑になりがちなので、DOM Invaderを使うと作業効率が劇的に向上します。
📝 まとめ表
| 項目 | 内容 |
|---|---|
| 目的 | JavaScript経由のXSSを見つける |
| 主な手法 | URL入力 → 開発者ツールでDOM調査 → ペイロード調整 |
| 推奨ツール | Chrome DevTools、Burp Suite + DOM Invader |
| よく使われるシンク | innerHTML, eval(), document.write() など |
| よく使われるソース | location.search, document.URL, referrer など |
DOMベースのXSSは見つけにくく、かつ危険度も高いため、検査ツールと開発者ツールをうまく使って、丁寧にチェックしていきましょう。
Best regards, (^^ゞ