
AuthMatrixは、WebアプリケーションおよびWebサービスにおける認可テストを簡単に行うためのBurp Suite拡張機能です。
AuthMatrix は Burp Suite の拡張機能であり、Web アプリケーションや Web サービスにおける認可テストを簡単に行えるようにします。AuthMatrix を使用すると、テスターは事前に特定のターゲットアプリケーションに対して、ユーザー、ロール、リクエストのテーブルを徹底的に定義することに集中できます。これらのテーブルは、さまざまな脅威モデリング手法で一般的なアクセス制御マトリックスと同様の形式で構成されます。
テーブルが完成したら、テスターはシンプルなクリック実行インターフェースを使用して、ロールとリクエストのすべての組み合わせを一気に実行できます。結果は、システムで検出された認可の脆弱性を示す、見やすく色分けされたインターフェースで確認できます。さらに、この拡張機能では、ターゲット設定を保存および読み込む機能も提供され、簡単な回帰テストが可能です。
AuthMatrix は Burp Suite の BApp ストアからインストールできます。Burp Suite 内で、Extender タブを選択し、BApp Store を選択し、AuthMatrix を選択して、インストールをクリックします。
手動インストールの場合は、このリポジトリから AuthMatrix.py をダウンロードします。その後、Burp Suite 内で Extender タブを選択し、Add ボタンをクリックし、Extension type を Python に変更し、AuthMatrix の Python ファイルを選択します。
AuthMatrix を使用するには、Burp Suite で Jython を使用するように設定する必要があります。簡単な手順は次の URL にあります。
https://portswigger.net/burp/help/extender.html#options_pythonenv
互換性を確保するために、Jython バージョン 2.7.0 以上を使用してください。
ターゲットアプリケーション内のすべての権限レベルに対してロールを作成します。(一般的なロールには、User、Admin、Anonymous などがあります)
これらのさまざまなロールに適合する十分な数のユーザーを作成し、そのユーザーが属するすべてのロールのチェックボックスを選択します。単一ユーザーのみを含む「Single-User」ロールは、クロスユーザーリソーステストを支援するために自動的に設定されます。これらが不要な場合は、リクエストテーブルの列を右クリックして削除してください。
Repeater タブから各ユーザーのセッショントークンを生成し、ユーザーテーブルの該当する列に入力します。Cookie は、Repeater で利用可能な右クリックメニューから直接ユーザーに送信できます。AuthMatrix はテーブルから Cookie 文字列をインテリジェントに解析し、リクエストに適宜置換/追加します。
注:Cookie フィールドはオプションです。ターゲットが代わりに HTTP ヘッダーを使用する場合は、「New Header」ボタンをクリックして追加できます。
認証情報の自動更新を含むより高度な設定については、以下の「ユーザー認証用チェーン」の例を参照してください。
Burp Suite の別のエリア(Target タブ、Repeater タブなど)からリクエストを右クリックし、「Send to AuthMatrix」を選択します。
AuthMatrix のリクエストテーブルで、各 HTTP リクエストの実行を許可されたすべてのロールのチェックボックスを選択します。
リクエストの期待される応答動作に基づいて、アクションが成功したかどうかを判断するための応答正規表現をカスタマイズします。
一般的な正規表現には、HTTP 応答ヘッダー、本文内の成功メッセージ、またはページ本文内のその他のバリエーションが含まれます。
注:リクエストは、右クリックメニューから代わりに Failure Regex(失敗正規表現)を使用するように設定できます(例:認証されたユーザーは HTTP 303 を決して受信しないようにする必要がある場合)。
下部の「Run」をクリックしてすべてのリクエストを実行するか、複数のリクエストを右クリックして「run」を選択します。隣接するテーブルに色分けされた結果が表示されることを確認します。
緑色:脆弱性が検出されなかったことを示します。
赤色:リクエストに脆弱性が含まれている可能性があることを示します。
青色:結果が誤検出である可能性があることを示します。(通常、無効/期限切れのセッショントークン、または誤った正規表現があることを意味します)


チェーンを使用すると、静的または動的な値をリクエストのボディにコピーできます。これらの値は、以前に実行したリクエストの応答(正規表現を使用)から取得するか、ユーザー固有の静的文字列値を指定して取得できます。
チェーンの最も一般的な使用例は次のとおりです。
有効な CSRF トークンでリクエストを事前入力する
新しく作成された ID/GUID のクロスユーザー認可の問題をテストする
認証とセッション更新の自動化
チェーンエントリには次の値があります。
Chain Name: 説明的な名前
Source: ユーザーテーブルで定義された静的なユーザー文字列、またはリクエストテーブル内のソースリクエストの ID
Extraction Regex: ソースリクエストの応答から値を抽出するために使用される正規表現。このフィールドは、前のフィールドでリクエストが指定された場合にのみ使用されます。使用する場合は、抽出する括弧によるグループ化が 1 つ含まれている必要があります [例:(.*)]
Destinations: ソース値が置き換えられるリクエスト ID のリスト。
Replacement Regex: ソース値を挿入する場所を決定するために使用される正規表現。置き換える括弧によるグループ化が 1 つ含まれている必要があります [例:(.*)]
Use Values From: 選択した 1 人のユーザーから取得したソース値を使用するか(クロスユーザーリソーステストに便利)、またはすべてのユーザーの値を使用して、対応するユーザーの宛先リクエストに配置するか(CSRF トークン取得などの自動化タスクに便利)を指定します。
注: リクエストは行の順序で実行されますが、チェーンの依存関係が検出された場合、AuthMatrix は必要な順序でリクエストを実行します。



特定のターゲットでは、リクエストが失敗したときの応答条件を検出するように AuthMatrix を設定する方が簡単な場合があります。たとえば、ターゲットサイトが正常なリクエストでは固有のデータを返すが、許可されていないアクションが実行された場合は常に HTTP 303 を返す場合などです。
このモードでは、AuthMatrix は、成功するロールに属していないすべてのユーザーに対してこの正規表現を検証します。
これを行うには、リクエストを右クリックして「Toggle Regex Mode」を選択します。正規表現フィールドが紫色で強調表示され、AuthMatrix が失敗正規表現モードでリクエストを実行することを示します。
注: 誤検出の検出と強調表示は、失敗正規表現モードでは機能しない場合があります。
