メッセージエディタは、HTTPリクエストとレスポンス、WebSocketメッセージの表示や編集をするためにBurp全体で使用されます。メッセージ自体を表示するだけではなく、メッセージを素早く分析し、Burpのコアワークフローを推進し、他の便利なタスクの実行をするための多くの機能があります。
メッセージエディタは主に次のパネルで構成されています:
Inspectorの概要は、Inspector入門を参照してください。
メッセージエディタの右上隅には、自分の好みに合わせてレイアウトを調整するためのアイコンが3つ並んでいます。次の選択肢があります:
各リクエストまたはレスポンスの上部には、メッセージ解析ツールバーがあります。ここにはメッセージの内容を別の形式で表現するタブがあり、一般的な操作を行う追加機能もあります。
デフォルトで、Pretty、Raw、Hex、Renderタブが表示されていますが、設定メニューでタブの削除、並び替え、追加ができます。
テキストエディタはこのタブで、メッセージ全体を生の形式で表示します。テキストエディタには、構文分析、ホットキー、テキスト検索など便利な機能がいくつもあります。\nボタンを使用すると、印字不可文字が表示されます。
Burp RepeaterなどBurpの一部のツールでは、テキストエディタでリクエストを直接編集もできます。
Actionメニューや、関連するメッセージのどこかをクリックすると、ツール全体で利用できる、リクエストとレスポンス両方に対するコンテキスト固有のアクションにアクセスできます。メッセージから1文字以上の文字を選択すると、その値をInspectorで操作できます。
このタブでは、Rawタブと同じ機能にすべてアクセスできます。主な違いは、テキストエディタの整形表示機能が有効になっていることです。これにより、HTTPメッセージ内のデータ、マークアップ、コードが、正規化されたインデントと改行で表示されるため可読性が大幅に向上します。
編集可能なメッセージで、かつサポートされているテキスト形式であれば、入力をするたびに可能な限り動的に整形しようとします。それ以外の場合、リクエストを送信するときにテキストが整形されます。
このタブは、サポートされているフォーマットのいずれかがメッセージのコンテンツに含まれている場合にのみ表示されます。
このタブでは、メッセージの生の形式をHexエディタで表示します。1行あたり16バイトを配置し、各バイトの16進数値を表示します。Hexタブでメッセージを編集でき、文字または00からFFまでの2桁の16進数で指定して値を挿入できます。
選択したバイトはすべてInspectorに表示されます。Inspectorで直接か、テーブル内の値をダブルクリックすると、個々のバイトを直接編集できます。行番号をクリックするとバイトの行が選択され、選択した部分をInspectorで表示できます。
Hexタブは、次の場合に便利です:
このタブのコンテキストメニューには、さらに次のアイテムがあります:
メッセージボディにHTMLや画像コンテンツを含むHTTPレスポンスに適用されます。ブラウザに表示されたときに表示される形式で、メッセージボディの内容をレンダリングしようとします。
メッセージエディタには、次のタブを追加できます:
これらのタブは、Inspectorパネルのウィジェットと同じ機能があります。
Proxy履歴のような読み取り専用のコンテキストでは、適切なコンテンツがメッセージに含まれている場合にのみ、これらのタブを表示します。例えば、リクエストにcookieが1つ以上含まれていない限り、Cookieタブは表示されません。
Burp Repeaterのような編集可能なコンテキストでは、タブはとにかく表示されます。これにより、元のリクエストに存在しなかったアイテムでも追加できます。
メッセージエディタにタブを追加するには、Inspectorパネルの右上にある設定アイコンをクリックし、メッセージエディタオプションを選択します。
これらのタブは、Inspectorパネルのウィジェットと同じ機能があります。
詳細はInspectorのドキュメントを参照してください。
一部のBurp拡張は、メッセージエディタにタブを追加します。
Actionsメニューから、現在のリクエストで利用できるすべてのコンテキスト固有のアクションに素早くアクセスできます。
メッセージエディタでは、次も行えます:
Inspectorを使用して文字のコードポイントを編集する代わりに、選択範囲をURLエンコードし、16進コードをインラインで編集してから、選択範囲を元の形式にデコードする方が速い場合があります。これは、対応するホットキーを使用すると特に効果的です。
メッセージエディタは、HTTP/2メッセージをHTTP/1構文を使用して表現し、基本的に同等のHTTP/1リクエストではどのようになるかを示します。変更を加えるたびに、Burpはバックグラウンドで自動的にHTTP/2に変換し、基になるHTTP/2リクエストを更新します。一般的なテスト目的では多くの場合、使用しているプロトコルの違いによる影響はないため、HTTP/2でも通常どおりメッセージエディタを使用できます。
このHTTP/1スタイルの表示では、HTTP/1構文の制限に縛られ、また有効なHTTP/2リクエストが生成されるように若干の正規化が必要です。HTTP/2特有のプロトコルレベルの問題をテストする場合には適していない場合があります。このような場合は、Inspectorを使用したHTTP/2の操作を推奨します。
詳細は、HTTP/2ドキュメントを参照してください。
Actionsボタンをクリックすると、リクエストとレスポンスに対するコンテキスト固有の幅広いアクションにアクセスできます。あるいは、メッセージを右クリックして、コンテキストメニューからアクションの選択もできます。使用可能なアクションは、メッセージタイプによって異なります。これらを以下に記載します。
エディタが表示されたツールによって、メニューに追加アイテムが含まれる場合があります(たとえばRepeaterでは、URLをリクエストとして貼り付け、現在のアイテムをサイトマップに追加など)。
任意のメッセージやメッセージ内の選択した部分を、Burpの他のツールに送信して、さらなる攻撃や分析が実行できます。ツール間でリクエストを送信する機能は、Burpのユーザ主導ワークフローの中核をなします。
選択したレスポンスをBurpブラウザ内でレンダリングさせることで、Burpの内蔵HTMLレンダラの制限を回避します。このオプションを選択すると、Burpブラウザにペーストできる一意なURLが生成され、レスポンスがレンダリングされます。その結果、ブラウザのリクエストがBurpによって処理され(リクエストは元のWebサーバには送信されません)、選択したレスポンスを正確に返し、最初にリクエストされたURLのコンテキストでブラウザがレスポンスを処理します。したがって、レスポンス内の相対リンクは、Burpブラウザによって正しく処理されます。その結果、ブラウザはレスポンスのレンダリングの課程で追加のリクエスト(画像やCSSなど)を行う場合があり、これらはBurpの通常の方法で処理されます。
選択したリクエストをBurpブラウザで再送信できます。次のサブオプションがあります:
このサブメニューには、関連するタスクを実行するさまざまな便利な機能があります:
リクエストに対して、リクエストメソッドのGETとPOSTを自動的に切り替え、関連するすべてのリクエストパラメータをリクエスト内の適切な位置に再配置します。このオプションを使用すると、入力フィルタのバイパスやクロスサイトスクリプティング攻撃の微調整など、アプリケーションのパラメータ位置の許容範囲を素早くテストできます。
リクエストに対して、任意のメッセージボディのエンコードを、標準のURLエンコードにするか、マルチパートにするかを切り替えられます。
現在の完全なURLをクリップボードにコピーします。
現在のリクエストを生成するcurlコマンドをクリップボードにコピーします。
ファイルを選択し、現在のメッセージのコンテンツをファイルにコピーできます。これは、クリップボードにコピーすると問題が発生する可能性があるようなバイナリコンテンツに便利です。選択したテキストか、何も選択していない場合はメッセージ全体がコピー処理されます。
ファイルを選択し、ファイルの内容をメッセージ内に貼り付けられます。これは、クリップボードから貼り付けると問題が発生する可能性があるようなバイナリコンテンツに便利です。選択したテキストを置き換えるか、何も選択されていなければカーソル位置に挿入されます。
選択したリクエストとレスポンスを、レスポンス長、HTTPステータスコード、MIMEタイプなどすべての関連メタデータを含むXMLフォーマットで、選択したファイルに保存します。
これはRawビューにのみ適用されます。このサブメニューのアイテムで、選択したテキストをさまざまな形式で素早くエンコードまたはデコードができます。メッセージが編集可能な場合、テキストが選択されたその場所が変換されます。メッセージが編集可能でない場合は、変換結果がダイアログに表示されます。次のタイプの変換が利用できます:
これはRawビューにのみ適用されます。このオプションをオンにすると、&や=などの文字は、入力時に自動的にURLエンコードされた同等の値に置き換えられます。