オプションタブには、Burp Proxyの設定があります:
Proxyリスナーは、ブラウザからの接続を待ち受けるローカルHTTPプロキシサーバです。すべてのリクエストとレスポンスを監視し、インターセプトできます。
Burpはデフォルトで、ループバックインタフェースのポート8080でリスナーを1つだけ作成します。Burpブラウザでデフォルトのリスナーを使用して、ブラウザベースのほぼすべてのWebアプリケーションをテストできます。
複数のProxyリスナーを作成でき、それらの挙動を制御する豊富な設定オプションがあります。特殊なアプリケーションのテストや、ブラウザベースではないHTTPクライアントを使ったテストをする際、これらのオプションを使う必要があるかもしれません。
設定オプションにアクセスするには:
次のオプションタブがあります:
バインドタブでは、Proxyリスナーをローカルネットワークインタフェースにどのようにバインドするか制御します:
バインドするアドレス - バインドするローカルインタフェースのIPアドレスです。次のインタフェースにバインドできます:
すべてのインタフェース、あるいはループバック以外の特定のインタフェースにリスナーをバインドすると、他のコンピュータがそのリスナーに接続できるようになります。
リクエストハンドリングタブは、リスナーが受信したリクエストをリダイレクトするかどうかを制御します。:
リダイレクトオプションは、それぞれ独立して使用できます。たとえば、リクエストのポートとプロトコルは維持しつつ、特定のホストにすべてのリクエストをリダイレクトできます。
透過プロキシは、プロキシ非対応のクライアントが直接リスナーに接続できます。詳細は、透過プロキシを参照してください。
証明書タブは、TLSクライアントに提示されるTLSサーバ証明書を制御します。これらのオプションを使用すると、プロキシでインターセプトする際に発生するTLSに関するいくつかの問題を解決できます:
次のオプションがあります:
.p12
ファイル拡張子が必要なことに注意してください; .psx
フォーマットの証明書はサポートしていません。たとえば指定したシリアル番号や証明書チェーンの証明書など、特定のサーバ証明書を必要とするクライアントを使用する場合、このオプションを使用します。
CA証明書のインポート、エクスポート、生成については、CA証明書の管理を参照してください。
BurpがブラウザとTLSネゴシエーションを実行するときに使う、TLSプロトコルを制御します。Javaのデフォルトのプロトコルを使うようにもできますし、これらのデフォルト値を上書きしてカスタムプロトコルも有効にできます。
ProxyリスナーがクライアントにHTTP/2を使用させるかどうかを制御します。デフォルトで有効になっています。
まれなケースで、たとえばクライアントのHTTP/2実装に問題がある場合などは、無効にしたいことがあります。
この設定は、Burpとサーバ間の接続を変更するものではありません。Burpとサーバ間の接続を変更する方法は、HTTP設定を参照してください。
Interceptタブでどのリクエストとレスポンスを止めて表示や編集をするか制御します。リクエストとレスポンスには別々の設定が適用されます。
インターセプトチェックボックスは、任意のメッセージをインターセプトするかどうかを決定します。チェックされている場合、設定されたルールを適用して各メッセージをインターセプトするべきかどうか判断します。
各ルールの左側にあるチェックボックスで、有効と無効を切り替えます。ボタンを使用して、ルールの追加、編集、削除、並べ替えができます。
次のように、メッセージのほぼすべての属性についてルールを設定できます:
ターゲットスコープ内にあるURLのみインターセプトするルールを設定できます。正規表現を使用して、属性ごとに複雑な条件を定義できます。
ルールは順番に処理され、ブール型のANDやOR演算子を使用して結合されます。各演算子のスコープは次のように単純な"左から右"ロジックで処理されます:
(以前のルールの累積的な結果) AND/OR (現在のルールの結果)
各メッセージですべての有効なルールが処理されます。最後の有効なルールが適用された結果によって、メッセージをインターセプトするか、またはバックグラウンドに転送するか決定します。
Content-Lengthヘッダを自動的に更新するチェックボックスは、ユーザがメッセージを変更した場合にBurpが自動的にContent-Lengthヘッダを更新するかどうか制御します。このオプションは通常、HTTPボディが変更されたとき不可欠です。
リクエストに対して、リクエスト最後の空行の過不足を自動的に修正するオプションがあります。リクエストの編集時にヘッダの後に空行がない場合、Burpが追加します。編集されたリクエストで、URLエンコードされたパラメータのボディの末尾に空行があった場合、Burpはこれらを削除します。インターセプトビューで手動で編集したリクエストの間違いを修正するのに便利で、無効なリクエストがサーバに発行されないようにできます。
どのWebSocketメッセージを、インターセプトタブで止めて表示や編集するか制御します。
送信(クライアントからサーバ)メッセージと受信(サーバからクライアント)メッセージをインターセプトするか、それぞれ個別に設定できます。
レスポンスの自動変更を設定できます。アプリケーションレスポンスのHTMLを自動的に書き換えるとさまざまなタスクを達成できます。
次のオプションは、データ上のクライアント側のコントロールを除去するのに便利かもしれません:
次のオプションを使用すると、クライアント側のロジックをテスト用に無効化できます。これらの機能はNoScriptのようなセキュリティ保護のために設計されているわけではないことに注意してください:
次のオプションを使用すると、トラフィックが無意識のうちにBurpにプロキシされてしまっている被害者ユーザに対して、SSLstripのような攻撃を行えます。リスナーオプションと組み合わせて使用し、発信方向のリクエストでTLSを強制すると、ユーザの接続からTLSを効果的に削除できます:
検索と置換ルールを使用すると、Proxyを通過するリクエストとレスポンスを自動的に置換できます。HTTPメッセージごとに、有効な検索と置換ルールを順番に実行し、該当する置換を行います。
ルールはリクエストとレスポンス、メッセージヘッダとボディ、そしてリクエスト最初の特別な行について、個別に定義できます。各ルールに対して、一致させるリテラル文字列か正規表現パターンと、置換する文字列を指定できます。
メッセージヘッダの場合、ヘッダ行全体に一致する条件が指定されていて、置換文字列が空白の場合、そのヘッダは削除されます。検索文字列に空の文字列を指定した場合、置換文字列が新たなヘッダとして追加されます。
一般的なタスクを支援するために、さまざまなデフォルトルールがあります。これらは、デフォルトで無効になっています。
メッセージボディの複数行部分にマッチする標準的な正規表現構文を使用できます。たとえば、レスポンスボディが次のみの場合:
Now is the time for all good men to come to the aid of the party
次の正規表現を使用すると:
Now.*the
次にマッチします:
Now is the time for all good men to come to the aid of the
もし行内のみにマッチさせたい場合、正規表現を次の通り変更すると:
Now[^\n]*the
次にマッチします:
Now is the
検索文字列の中で括弧を使用してグループを定義でき、左から右に順番に1 から始まるインデックス番号が割り当てられています(0は一致したグループ全体を表します)。
グループはバックスラッシュとグループインデックスを使って、同じ一致文字列を前方参照できます。たとえば、間に他のタグを挟まない、開始と終了タグのペアにマッチするには、次の正規表現を使用します:
<([^/]\w*)[^>]*>[^>]*?</\1[^>]*>
置換文字列で、$とグループインデックスを使って、グループを参照できます。次の置換文字列には、上記の正規表現に一致したタグの名前が含まれます:
Replaced: $1
TLS接続を直接通過させる宛先Webサーバを指定する場合に使用します。これらの接続によるリクエストやレスポンスは、Proxyのインターセプトビューや履歴で詳細が利用できません。
TLS接続のパススルーは、TLS証明書をピニングしているモバイルアプリケーションなど、クライアントでのTLSエラーの除去が難しい場合に便利です。アプリケーションが複数のドメインにアクセスする、またはHTTPとHTTPSが混在している場合、問題のあるホストへのTLS接続をパススルーに指定すると、他のトラフィックはBurpを使った通常の方法で作業できるようになります。
クライアントがTLS接続に失敗したエントリを自動的に追加するを有効にすると、クライアントがTLSネゴシエーションに失敗したときにBurpが検出します。たとえば、BurpのCA証明書が認識されない場合などです。この場合、Burpは自動的にそのサーバをTLSパススルーリストに追加します。
その他セクションで、次のオプションにアクセスできます: