
認可問題をテストするためのBurp拡張機能。自動リクエストの繰り返しとパラメータ値のその場での抽出。
このBurp拡張機能は、認可バグの発見を支援します。高い権限を持つユーザーでWebアプリケーションをナビゲートし、Auth Analyzerにあなたの定義した非特権ユーザーのリクエストを繰り返させるだけです。パラメータ定義が可能で、Auth Analyzerはパラメータ値を自動的に抽出・置換できます。これにより、例えばCSRFトークンやセッション全体の特性をレスポンスから自動抽出し、後続のリクエストで置換できます。各レスポンスは分析され、バイパスステータスがタグ付けされます。
他にも基本的に同様のことを行うBurp拡張機能は存在します。しかし、パラメータ機能と自動値抽出の力がAuth Analyzerを選ぶ主な理由です。これにより、交換すべきデータの中身を知る必要がありません。パラメータとCookieを簡単に定義すれば、Auth Analyzerがその場で必要な値を取得します。Auth Analyzerはプリフライトリクエストを送信しません。基本的に、あなたのWebアプリが行うこととまったく同じことを、定義したユーザーロール/セッションで行います。
(1) テストしたいユーザーごとにセッションを作成または複製します。
(2) セッション設定を保存・読み込み
(3) セッション特性(置換するヘッダーやパラメータ)を指定
(4) 必要に応じてフィルタを設定
(5) Auth Analyzerの開始・停止・一時停止
(6) テーブルフィルタの指定
(7) 別のユーザーでWebアプリをナビゲートし、繰り返しリクエストの結果を追跡
(8) テーブルデータをXMLまたはHTMLにエクスポート
(9) 元のリクエストと繰り返しリクエスト/レスポンスを手動で分析

サイトマップにテストしたいリソースがある場合、認可テストを非常に簡単かつ迅速に実行できます。最初のステップで、テストしたいセッションを定義します。次にサイトマップを展開し、リソースを選択して、コンテキストメニューからリクエストを繰り返します。さらに、どのリクエストを繰り返し、どのリクエストを繰り返さないかを定義するオプションもあります。これにより、複雑なWebサイトの認可テストを数秒で実行できます。
Auth Analyzerでは、指定したセッションのリクエストを繰り返す前に置換されるパラメータを定義できます。パラメータの値は、さまざまな要件に応じて設定できます。
パラメータ値は、次のいずれかの条件でレスポンスに出現した場合に抽出されます。
定義された抽出フィールド名に設定されたCookie名を持つSet-Cookieヘッダーを含むレスポンス
HTMLドキュメントレスポンスに、定義された抽出フィールド名に設定されたname属性を持つ入力フィールドが含まれている
JSONレスポンスに、抽出フィールド名に設定されたキーが含まれている
デフォルトでは、Auth Analyzerはすべての場所からパラメータ値を自動抽出しようとします。ただし、パラメータ設定アイコンをクリックすると、必要に応じて自動抽出場所を制限できます。

レスポンスの行に指定されたFrom StringとTo Stringが含まれている場合、パラメータが抽出されます。From-To文字列は、手動で設定するか、対応するコンテキストメニューから直接設定できます。任意のレスポンス内で抽出したい単語をマークし、目的のパラメータのFrom-To抽出として設定します。
デフォルトでは、Auth Analyzerはほとんどのテキストレスポンスのヘッダーとボディから値を抽出しようとします。ただし、パラメータ設定アイコンをクリックすると、必要に応じてFrom-To抽出場所を制限できます。

静的なパラメータ値を定義できます。これは、例えば静的なCSRFトークンやログイン資格情報などに使用できます。
定義されたパラメータがリクエストに存在する場合、入力が促されます。これは、例えば2FAコードを設定する場合などに使用できます。
値が設定(抽出またはユーザー定義)された場合、対応するパラメータがリクエストに存在すれば置換されます。パラメータ置換の条件は次のとおりです。
パラメータは、次のいずれかの場所に存在する場合に置換されます。

パス内(例:/api/user/99/profile → userという名前のパラメータが存在する場合、値99が置換されます)
URLパラメータ(例:email=hans.wurst[a]gmail.com)
Cookieパラメータ(例:PHPSESSID=mb8rkrcdg8765dt91vpum4u21v)
ボディパラメータ(URLエンコードまたはマルチパートフォームデータ)
JSONパラメータ(例:{"email":"hans.wurst[a]gmail.com"})
デフォルトでは、パラメータ値はすべての場所で置換されます。ただし、パラメータ設定アイコンをクリックすると、必要に応じて場所を制限できます。

定義されたパラメータを完全に削除できます。例えば、CSRFチェック機構をテストするために使用します。
ユーザー名とパスワードを静的値として定義します。セッションCookie名は自動抽出として定義する必要があります。セッションCookieを設定せずにアプリケーションのナビゲーションを開始し、Webアプリにログインします。Auth Analyzerは静的パラメータでログインリクエストを繰り返し、Set-Cookieヘッダーから自動的にセッションを取得します。このCookieは、指定されたセッションの後続のリクエストで使用されます。定義されたCookieはパラメータとして扱われるため、Cookieヘッダーを定義する必要はありません。

ヒント:抽出および置換条件をパラメータに制限して、抽出/置換段階での誤動作を防ぐことができます。

CookieヘッダーとCSRFトークン(値の自動抽出付き)を定義します。CSRFトークン値は、指定されたセッションのHTML入力タグ、Set-Cookieヘッダー、またはJSONレスポンスに存在する場合に抽出されます。

自動抽出メソッドはHTML入力フィールド、JSONオブジェクト、またはSet-Cookieヘッダーでのみ機能するため、ジェネリック抽出メソッドであるFrom-To文字列を使用する必要があります。この抽出メソッドでは、一意の開始文字列と終了文字列の間にある任意の値をレスポンスから抽出できます。Auth Analyzerは、From文字列とTo文字列を自動的に設定するコンテキストメニューメソッドを提供します。抽出したい文字列をマークし、コンテキストメニューでFrom-To抽出として設定します。

Authorizationヘッダーは(Cookieヘッダーのように)パラメータとして扱われないため、ヘッダー挿入ポイントを使用して実現します。指定されたヘッダー内で置換したい値をマークして右クリックします。パラメータ値がまだ抽出されていない場合、defaultvalueが使用されます。

テストしたいロールの数だけセッションを作成します。

セッションステータスパネルでRenewを押すか、コンテキストメニュー(テーブルエントリを右クリック)で該当リクエストを繰り返します。ヒント:ログインリクエストは、その後マークしてフィルタリングできます。

べき等操作(例:DELETE機能)のテストのために、元のリクエストをドロップできます。

匿名ユーザーに有効な特性(例:有効なCookie値)が必要な場合は、通常どおりヘッダーを定義します。それ以外の場合は、以下のように削除するヘッダーを定義できます。

置換するヘッダーにOriginヘッダーを追加し、セッションパネルでTest CORSを選択することで、多数のエンドポイントの個別のCORS設定を簡単にテストできます。Test CORSを選択すると、Auth Analyzerはリクエストを繰り返す前にHTTPメソッドをOPTIONSに変更します。

削除チェックボックスを選択することで、指定されたパラメータを削除できます。これは、例えばCSRFチェック機構をテストするために使用できます。

Auth Analyzerには、2つのレスポンス間の差異を確認するための組み込み比較ビューが用意されています。分析したいメッセージをマークし、メッセージビュー(1)を変更します。これで2つのリクエスト(2) (3)を比較できます。内蔵のDiff機能は、2つのリクエスト間の差異をリアルタイムで計算して表示します(4)

拡大Diffビュー:

Auth Analyzerは、次の2種類のリクエスト/レスポンスを処理する必要があります。
抽出する値を含むレスポンス
定義されたセッションがアクセスしてはいけないリソースリクエスト
例えば、静的なJavaScriptファイルは誰でもアクセスでき、(できれば)保護データを含まないので処理したくありません。これを実現するために、以下の種類のフィルタを設定できます。
同じレスポンスボディかつ同じレスポンスコードの場合、レスポンスはSAME(同一)と宣言されます。同じレスポンスコードで、レスポンスボディ長の±5%以内の場合、レスポンスはSIMILAR(類似)と宣言されます。