hacktricks/pentesting-web/xss-cross-site-scripting/dom-invader.md

10 KiB
Raw Blame History

DOM Invader

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

DOM Invader

DOM Invaderは、Burpの組み込みブラウザにインストールされたブラウザツールです。Webメッセージやプロトタイプ汚染を含むさまざまなソースとシンクを使用して、DOM XSSの脆弱性を検出するのに役立ちます。このツールは拡張機能として事前にインストールされています。

DOM Invaderは、ブラウザのDevToolsパネル内にタブを統合し、次の機能を提供します。

  1. DOM XSSテストのためのウェブページ上の制御可能なシンクの特定。コンテキストとサニタイズの詳細も提供します。
  2. postMessage()メソッドを介して送信されたウェブメッセージのログ記録、編集、再送信。DOM Invaderは、特別に作成されたウェブメッセージを使用して脆弱性を自動的に検出することもできます。
  3. クライアントサイドのプロトタイプ汚染ソースの検出と、リスクのあるシンクに送信される制御可能なガジェットのスキャン。
  4. DOM clobberingの脆弱性の特定

有効化する

Burpの組み込みブラウザでBurp拡張機能に移動し、有効にします:

次に、ページを更新し、Dev ToolsDOM Invaderタブが表示されます:

カナリアを注入する

前の画像で、ランダムな文字のグループが表示されていますが、それがカナリアです。これをウェブのさまざまな部分パラメータ、フォーム、URLなど注入し、毎回検索をクリックします。DOM Invaderは、悪用できる可能性のある興味深いシンクにカナリアが到達したかどうかをチェックします。

さらに、URLパラメータを注入およびフォームを注入のオプションは、新しいタブを自動的に開き、見つかったすべてのURLパラメータフォームにカナリアを注入します。

空のカナリアを注入する

潜在的なシンクを見つけるだけでよい場合は、実行可能でなくても、空のカナリアを検索できます。

メッセージの送信

DOM Invaderでは、DOM XSSを使用してウェブメッセージをテストすることができます。次のような機能があります。

  1. postMessage()を介して送信されたウェブメッセージのログ記録。これは、Burp ProxyのHTTPリクエスト/レスポンス履歴のログ記録に似ています。
  2. DOM XSSを手動でテストするために、ウェブメッセージの編集再発行。これは、Burp Repeaterの機能に似ています。
  3. DOM XSSを探索するためのウェブメッセージの自動変更と送信。

メッセージの詳細

各メッセージをクリックすると、クライアントサイドのJavaScriptによってorigindata、またはsourceプロパティがアクセスされているかどうかを含む、詳細な情報が表示されます。

  • origin:メッセージのオリジン情報がチェックされていない場合、任意の外部ドメインからイベントハンドラにクロスオリジンメッセージを送信できる場合があります。ただし、チェックされていても安全ではない可能性があります。
  • data:ここにペイロードが送信されます。このデータが使用されない場合、シンクは無効です。
  • source通常はiframeを参照するソースプロパティが、オリジンではなく検証されているかどうかを評価します。これがチェックされていても、検証が回避できないことを保証するものではありません。

メッセージの返信

  1. メッセージビューから、メッセージの詳細ダイアログを開くために任意のメッセージをクリックします。
  2. 必要に応じてデータフィールドを編集します。
  3. 送信をクリックします。

プロトタイプ汚染

DOM Invaderは、プロトタイプ汚染の脆弱性を検索することもできます。まず、有効にする必要があります:

次に、Object.prototypeに任意のプロパティを追加できるソース検索します。

何かが見つかると、テストボタンが表示され、見つかったソースをテストすることができます。クリックして、新しいタブが表示され、コンソールでオブジェクトを作成し、testpropertyが存在するかどうかを確認します。

let b = {}
b.testproperty

ソースを見つけたら、ガジェットをスキャンできます:

  1. DOMビューから、DOM Invaderが見つけたプロトタイプ汚染ソースの隣にあるガジェットをスキャンボタンをクリックします。DOM Invaderは新しいタブを開き、適切なガジェットをスキャンし始めます。
  2. 同じタブで、DevToolsパネルのDOM Invaderタブを開きます。スキャンが終了すると、DOMビューには、特定のガジェットを介してアクセスできるシンクが表示されます。以下の例では、innerHTMLシンクに渡されたhtmlというガジェットプロパティが表示されています。

DOM clobbering

前の画像では、DOM clobberingスキャンをオンにすることができます。これを行うと、DOM InvaderはDOM clobberingの脆弱性を検索し始めます

参考文献

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥