DOM Invader

Reading time: 9 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

DOM Invader

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

DOM Invaderは、ブラウザのDevToolsパネル内にタブを統合し、以下を可能にします:

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

有効にする

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

ページを更新し、Dev ToolsDOM Invaderタブを見つけます:

カナリアを注入する

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

さらに、Inject URL paramsおよびInject formsオプションは、自動的に新しいタブを開き、見つけたすべての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. Messagesビューから、任意のメッセージをクリックしてメッセージ詳細ダイアログを開きます。
  2. 必要に応じてDataフィールドを編集します。
  3. Sendをクリックします。

プロトタイプ汚染

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

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

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

javascript
let b = {}
b.testproperty

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

  1. DOMビューで特定されたプロトタイプ汚染ソースの隣にあるガジェットをスキャンボタンをクリックすると、DOM Invaderによって新しいタブが開かれます。適切なガジェットのスキャンが始まります。
  2. 同じタブで、DevToolsパネルにDOM Invaderタブが開かれている必要があります。スキャンが完了すると、特定されたガジェットを介してアクセス可能なシンクがDOMビューに表示されます。例えば、innerHTMLシンクに渡されるhtmlという名前のガジェットプロパティが以下の例に示されています。

DOMクラッキング

前の画像では、DOMクラッキングスキャンをオンにできることがわかります。完了すると、DOM InvaderはDOMクラッキングの脆弱性を探し始めます

参考文献

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする