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, (^^ゞ