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

9.6 KiB
Raw Blame History

DOM Invader

ゼロからヒーローまでのAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

HackTricksをサポートする他の方法

DOM Invader

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

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

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

有効にする

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

その後、ページを更新し、Dev ToolsDOM Invaderタブが見つかります:

キャナリーを注入する

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

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

空のキャナリーを注入する

シンクが潜在的にある場合でも、それが悪用できなくても、ページが持つ可能性のあるシンクを見つけたい場合は、空のキャナリーを検索できます。

ポストメッセージ

DOM Invaderを使用して、Webメッセージを使用したDOM XSSのテストが可能です。以下の機能を備えたWebメッセージのテストが可能です

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

メッセージの詳細

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

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

メッセージの返信

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

プロトタイプ汚染

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

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

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

let b = {}
b.testproperty

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

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

DOM clobbering

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

参考文献

AWS ハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)!

HackTricks をサポートする他の方法: