Webメッセージを使用したDOM XSSのテスト

DOM Invaderには、Webメッセージ使用したDOM XSSをテストするための機能が数多くあります。これは、次の通りです:

DOM InvaderのMessagesビューから、これらのすべての機能にアクセスできます。

DOM Invaderを使ったWebメッセージのテスト

これらの機能を利用するには、まずDOM Invaderの設定メニューでPostmessageのインターセプトを有効にする必要があります。詳細は、メイン設定を参照してください。

Webセキュリティアカデミー

WebメッセージベースのDOM XSSについてブラッシュアップしたい場合は、Webセキュリティアカデミーをチェックしてください。ここには意図的に脆弱性を組み込んだラボがあるので練習もできます。

Webメッセージソースの制御

Webメッセージのインターセプトを有効化

対象サイトの機能に影響を与えないよう、DOM InvaderのWebメッセージ機能はデフォルトで無効になっています。

これらの機能を有効にするには:

  1. DOM Invaderの設定メニューに移動します。

  2. Postmessage interceptionスイッチを選択します。

  3. Reloadをクリックし、ブラウザをリロードします。これは、変更を有効にするために必要です。

Webメッセージのインターセプトを有効化

興味深いWebメッセージを探索

Webメッセージのインターセプトを有効にすると、ページ上のpostMessage()メソッドで送信されたすべてのWebメッセージが自動的に記録されます。デフォルトで、検出したメッセージイベントハンドラに対して、独自のメッセージの生成と送信も行います。

これらはMessageビューで確認できます。

DOMインベーダーのMessageビュー

Webメッセージの自動分析

DOM Invaderはデフォルトで、あなたの代わりに興味深いメッセージを識別しフラグを立てようとします。これは、次のようにメッセージを変更して実現します:

この2つの機能は、DOM Invaderの設定メニューで無効にできます。詳細は、Webメッセージの設定を参照してください。

DOM Invaderは、観察された動作に基づいて、悪用可能と思われるメッセージに自動的にフラグを立て、問題の深刻度と信頼度の推定値を表示します。DOM Invaderが自動検出できない脆弱性が含まれている可能性があるため、ページ上で送信されたすべてのメッセージは、少なくとも情報の重要度で表示されます。

メッセージの詳細

各メッセージをクリックすると、そのメッセージの詳細な情報を表示できます。たとえば、origindatasourceプロパティが、クライアント側JavaScriptによってアクセスされているかどうかなどです。

メッセージ詳細の表示

この情報は、メッセージが有用かどうかを判断する手がかりとなり、適切なエクスプロイトを作成する方法がわかります。

オリジンへのアクセス

クライアント側のコードがメッセージのoriginプロパティにアクセスしていない場合は、オリジンが検証されていない可能性があります。その結果、任意の外部ドメインからイベントハンドラに対してクロスオリジンメッセージを送信できるかもしれません。

クライアント側のコードがメッセージのoriginプロパティにアクセスしていても、安全ではない場合があります。バリデーションを回避できるかもしれません。その方法を見つけるために、DOM Invaderはスタックトレースで、コード内の関連する行へのリンクを表示します。詳細は、クライアント側コードの検討を参照してください。

Webセキュリティアカデミー

欠陥のあるオリジン検証の回避

データへのアクセス

メッセージのdataプロパティは、ペイロードを挿入する潜在的な場所です。JavaScriptがこのプロパティにアクセスしていない場合、シンクには渡せません。この場合、このメッセージは重要ではありません。

ソースへのアクセス

メッセージのsourceプロパティは、メッセージ送信元のwindowオブジェクトへの参照です。実際には、通常はiframeへの参照です。特定の信頼されたiframeからメッセージが送信されていることを確実に確認するために、Webサイトは多くの場合sourceプロパティを検証します。

オリジンと同様に、クライアント側のコードがこのプロパティにアクセスしていても、必ずしもソースが検証されていること、およびこの検証が回避できないことが保証されているわけではない点に注意してください。

Webメッセージの再送

DOM Invaderは、Burp RepeaterのHTTPリクエストと同じように、Webメッセージの変更や再送ができます。これにより、WebメッセージをソースとしたDOM XSSの調査がより容易になります。

変更したWebメッセージを送信するには:

  1. Messagesビューで任意のメッセージをクリックすると、メッセージの詳細ダイアログが開きます。

  2. 必要に応じて、Dataフィールドを編集します。

  3. Sendをクリックします。

例えば、イベントハンドラがオリジンの検証を行わず、データをelement.innerHTMLのシンクに渡しているメッセージを発見できます。この場合、<>"などの文字がエスケープされているかどうかをテストするメッセージを送信し、その後これらの文字をペイロードに使用した概念実証を作成して送信できます。

概念実証の生成

Webメッセージを使用した悪用可能な脆弱性をDOM Invaderが発見すると、概念実証のHTMLを生成しレポートに含められます。

概念実証を生成するには:

  1. 脆弱なメッセージを選択すると、メッセージの詳細ダイアログが開きます。

  2. エクスプロイトに必要な値を変更します。

  3. Build PoCをクリックします。クリップボードにHTMLが保存されます。

続きを読む

DOM Invaderは高度な設定が可能です。DOM Invaderの高度な機能と、特定サイト向けに動作を微調整する方法は、Webメッセージの設定を参照してください。