セッションハンドリングルールエディタでは、Burpが使用するセッションハンドリングルールを設定できます。ルールエディタを開くには、設定 > セッション > セッションハンドリングルールを選択し、ルールを追加するには追加を、既存のルールを編集するには編集を選択します。
セッションハンドリングルールエディタには、2つのタブがあります:
詳細タブのルール詳細設定にアクセスします。ここには、ルールが何を行うか説明を記述できます。入力された説明は、ルールエディタのアクティブなルールのリストに表示されます。
詳細タブのルールアクション設定にアクセスします。ここでは、ルールが実行するアクションを設定できます。
各ルールには、ルールが適用されたときに実行される1つまたは複数のアクションが含まれています。Burpは、以降のアクションをリクエストに適用しないよう設定されたアクションがない限り、これらのアクションを順番に実行します。
追加をクリックすると、次のアクションがルールに追加されます:
これらのアクションを組み合わせれば、事実上あらゆるセッションハンドリング機構を処理できます。たとえば、マクロを実行した結果に基づいて、指定したcookieとパラメータ値を更新するルールを設定できます。これを利用すると、自動スキャンやIntruder攻撃の途中で、アプリケーションへの再ログインが自動的にできます。
このアクションは、Burpのcookie jarのcookieで、リクエストを更新します。すべてのcookie(一部除外も可)、または特定のcookieだけを更新するようアクションを設定できます。
Burpのcookie jarの動作については、セッションを参照してください。
このアクションは、指定した名前のリクエストパラメータやcookieに、指定した値をセットします。指定した名前のパラメータやcookieがリクエストに存在しない場合、どこに追加するかを指定できます:
このアクションは、現在のセッションが有効かどうかチェックします。無効な場合、新しい有効なセッションを取得するための追加のアクションを選択できます。
Burpは現在のセッションの有効性を判断するために、1つ以上のリクエストを発行します。このアクションを実行する場合、Burpは次のことが可能です:
Burpが現在のリクエストを発行し、セッションが有効だとルールが判断した場合、システムは現在のリクエストに対してさらにアクションは実行しません。
指定した回数のリクエスト後にBurpがセッションを検証するように設定もできます。これにより、アプリケーションがセッションをほとんど無効にしない場合、余計なリクエストを発生させなくて済みます。
設定されたリクエストを作成後、Burpはレスポンスを調べてセッションが有効か判断します。Burpがマクロを実行した場合、Burpはマクロ内最後のリクエストのレスポンスを調べます。
セッションが有効か判断するために、指定した文字列がレスポンスに含まれているかどうかをチェックします。次を検索するように設定できます:
リテラル文字列または正規表現で検索できます。大文字と小文字を区別して検索もできます。
セッションの有効性チェックが完了した後のBurpの動作を設定できます。
セッションが有効な場合、Burpが現在のリクエストにさらにルールやアクションを処理するかどうか選択できます。
セッションが無効な場合、新しい有効なセッションを取得するために、Burpが次のいずれかのアクションを実行するように設定できます:
マクロを実行するを選択すると、Burpは1つ以上のマクロを実行し、新しい有効なセッションを取得しようとします。マクロを選択メニューから、実行するマクロを指定できます。
マクロの記録と編集は、マクロエディタを参照してください。
マクロが実行されたあと、マクロの最後のレスポンスのマッチしたパラメータでリクエストを更新するかどうかを選択できます。また、セッションハンドリングcookie jarのcookieでリクエストを更新するかどうかも選択できます。指定したパラメータやcookieを使用してリクエストを更新するか、指定したパラメータやcookie以外のすべてのパラメータやcookieを使用して更新するか、選択できます。
パラメータマッチ時にURLの不一致を許容するを選択すると、BurpはURLの不一致を許容します。
通常、過去のレスポンスからパラメータを変更させる場合、レスポンスから推測されるパラメータ名とURLの両方を、後続のリクエストのパラメータ名とURLにマッチさせます。このオプションは、URLに依存しないCSRFトークン、つまりアプリケーションのある場所で取得して別の場所で再利用できるトークンをアプリケーションが使用している場合に便利です。
パラメータマッチ時にURLの不一致を許容するオプションは、これらのルールを簡素化します。固定の場所から新しいトークンを取得するマクロを1つ作っておき、CSRFトークンパラメータを含むあらゆるリクエストでそのマクロを実行できます。
Burpブラウザを使用して有効なセッションを復元するようBurpにプロンプトを出させます。アプリケーションによってセットされたcookieはBurpのセッションハンドリングcookie jarに追加され、設定により現在のリクエストを更新できます。
すべてのcookie(必要に応じて一部除外)を更新するか、特定のcookieだけを更新するか、選択できます。
このアクションは、現在処理中のリクエストを発行した後、さらにマクロを実行します。このリクエスト後に、さらにルールやアクションは実行されません。
テストするリクエストが多段階処理の途中に存在し、残りの手順を実行してアプリケーションの状態を更新し対象リクエストの影響を判断する必要がある場合に、リクエスト後マクロが便利です。
現在のリクエストに対するレスポンスを使用して、最初のマクロリクエストをBurpが更新するよう設定できます。このオプションを選択すると、最初のマクロリクエストのすべてのパラメータ(必要に応じて一部除外)を更新する、または特定のパラメータのみ更新できます。
起動しているツールに次のどちらを渡すか、アクションを設定できます:
後者は、多段階処理の途中をスキャンやファジングした結果、その処理のエラーメッセージが後の手順で表示される場合に便利です。
このアクションは、Burp拡張を起動して現在のリクエストを処理します。リストから必要な拡張を選択できます。ただし、セッションハンドリングアクションハンドラーを登録している拡張のみ選択できます。
このアクションは、指定されたヘッダの値を置き換えます。存在しない場合は追加チェックボックスを選択すると、ヘッダが存在しないリクエストにヘッダを追加できます。
ツールスコープ設定は、セッションハンドリングルールエディタのスコープタブにあります。ここで、各ルールをどのBurpツールに適用するかを指定できます。Burpは、スコープ内のツールからのリクエストに対してのみルールを適用します。
URLスコープ設定は、セッションハンドリングルールエディタのスコープタブにあります。それぞれのルールが適用されるURLを指定できます。次のオプションから選択できます:
URLスコープの設定の詳細は、URLマッチルールを参照してください。
特定の名前のパラメータを含むリクエストだけにルールを適用するよう指定できます。これにより、すべてのリクエストでCSRFトークンなど特定のパラメータを更新するルールを作成できます。