Shikata Ga Nai

Private? There is no such things.

DOMベースのXSSのテスト方法:初心者でもわかる手順解説

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+Fabc123 を検索して、DOM内のどこに表示されているかを確認します。

💡「ページのソースを表示」は意味がないので、必ず開発者ツールを使ってDOMを調べること

ステップ 3:表示された場所のコンテキスト確認

  • HTMLタグの中か?
  • 属性の中か?
  • JavaScriptコードの中か?

このコンテキストに合わせてペイロードを変更していきます。


💻 テスト手順:JavaScript実行シンクの場合

ステップ 1:JavaScriptコードを検索

Chromeの開発者ツールで Ctrl+Shift+F を押して、locationdocument.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, (^^ゞ