Burp Extender

Burp Extenderでは、コミュニティが作成した拡張をインストールしたり、あなた自身が拡張を作成することで、Burpの機能を拡張できます。

Burp拡張は、さまざまな方法でBurp Suiteの挙動をカスタマイズし、拡張できます。次が可能です:

このページでは次の内容を紹介します:

リリース2022.5から、Burp Suiteの実行にはJava 11以降が必要です。Burp SuiteをJARファイルとして実行しない限り、この変更による影響はないはずです。ただし、バージョン11未満のJavaで書かれた拡張は、Burp Suite 2022.5以降では正しく動作しない可能性があります。

BAppストアについて

BAppストアには、コミュニティが作成した拡張やBAppがあり、セキュリティや品質についてレビューが行われています。

Extender > BAppストアタブから、BAppストアにアクセスできます。ここで、利用可能なBAppを表示しインストールできます。すでにインストールされているBAppの評価も可能です。

BAppストアから拡張をインストール

Extender > BAppストアタブから拡張をインストールするには、一覧から拡張を選択し、詳細パネルにあるインストールボタンをクリックします。

BAppストアからBAppをインストール

一部のBAppは、PythonやRubyで書かれています。これらを利用するには、JythonやJRubyをダウンロードし、Extender > オプションタブでPython環境Ruby環境の設定を行う必要があります。

一部のBAppをインストールするためには、Burp SuiteのアップデートやBurp Suite Professionalへのアップグレードが必要な場合があります。

BAppストアから拡張をインストールした場合、Burp Suiteは自動的に拡張を最新の状態に保ちます。

拡張の管理

Extender > 拡張タブで、インストールされている拡張の一覧が確認できます。

リクエストとレスポンスは、一覧の上に表示されている拡張から順番に処理されていきます。つまり、読み込まれた複数の拡張でリクエストを変更したい場合は、変更したい順番にすることが重要です。上へ下へボタンで順番を変更できます。

拡張を一覧から削除せずに無効にするには、Loaded列のチェックボックスをオフにしてください。

拡張をアンインストールして一覧から削除するには、削除ボタンをクリックしてください。

使用する拡張の種類や数によって、システムのパフォーマンスに影響が出る場合があります。System impact列には、各BAppによるシステム影響の概算が示されます。システム影響の概算バーには、読み込まれた拡張の組み合わせがパフォーマンスに与える影響度が表示されます。

ファイルから拡張機能をインストール

BAppストア以外から拡張をインストールするには、Burp拡張一覧の横にある追加ボタンを使用します。

BAppストアのサイトからファイルとしてダウンロードしたBAppも、同じ手順でインストールできます。これは、インターネットに接続されていないマシンでBurp Suiteを実行している場合に便利です。

PythonやRubyで書かれた拡張をインストールするには、JythonやJRubyをダウンロードし、Extender > オプションタブでPython環境Ruby環境の設定を行う必要があります。

このようにインストールした拡張のファイルを更新した場合は、更新後にBurp SuiteのLoadedチェックボックスで再読み込みする必要があります。Ctrl/⌘キーを押しながらLoadedチェックボックスをクリックすると、確認ダイアログを表示せずに拡張を高速リロードできます。

拡張詳細

拡張の一覧でアイテムを選択すると、下部のパネルにその拡張に関する情報が表示されます。

詳細タブには、次の情報が表示されます:

出力タブには、拡張の標準出力ストリームの詳細が表示されます。エラータブには、標準エラーストリームについて同じ情報が表示されます。各ストリームについて、アプリケーションの出力をシステムコンソールに出力するか、ファイルに保存するか、UIに表示するかを設定できます。次の点に注意してください:

拡張がシステム性能に与える影響

拡張により、Burp Suiteはさまざまな追加タスクを実行できます。それらのタスクが大量のリソースを使用する場合や時間がかかる場合に、Burp Suiteのパフォーマンスに影響を与える可能性があります。

複数の拡張を同時に使用すると、性能への影響が累積していきます。Burp Suiteの動作が遅い場合は、いくつかの拡張をアンロードしてみてください。

システム影響の概算

BAppストアでは、システム影響の概算セクションに、BAppがシステムパフォーマンスに与える可能性のある影響が表示されます。

システムへの影響を、低、中、高の3段階で表しています。

システム影響の概算は、次のカテゴリに分かれます。

Burp Suiteの普通の使い方を再現するように設計されたさまざまなテストで、自動的にベンチマークを生成しています。

これらの評価はあくまで目安で、BAppによるパフォーマンスへの影響を完全に反映していない可能性があります。カスタムタブやコンテキストメニューオプションを追加するBAppは、十分なテストができません。

Extenderオプション

オプションタブには、拡張の設定Java環境Python環境Ruby環境があります。

設定

次の設定があります:

Java環境

Javaで記述された拡張を実行する環境が設定できます。拡張が任意のライブラリを使用している場合、ライブラリが読み込まれるフォルダを指定できます。BurpはこのフォルダとサブフォルダからJARファイルを検索し、Java拡張の読込に使用するクラスローダのクラスパスに含めます。

Python環境

Pythonで書かれた拡張を実行する環境が設定できます。Pythonの拡張を使用するには、Javaで実装されたPythonインタープリタである、Jythonをダウンロードする必要があります。次のオプションがあります:

JythonはJavaクラスを動的に生成するため、異なるPython拡張をいくつもロードしたり、何度もPython拡張のアンロードとロードを行うと、メモリ問題が発生する場合があります。この場合、次のようなエラーが表示されます:

java.lang.OutOfMemoryError: PermGen space

Burpを起動するときのコマンドラインオプションに-XX:MaxPermSizeを追加し、より多くの PermGenストレージが割り当てられるようJavaを設定すると、この問題を回避できるかもしれません。例:

java -XX:MaxPermSize=1G -jar burp.jar

Ruby環境

Rubyで書かれた拡張を実行する環境が設定できます。Rubyの拡張を使用するには、Javaで実装されたRubyインタープリタである、JRubyをダウンロードする必要があります。ここでJRubyのJARファイルの場所を設定するか、起動時にJavaクラスパスからJAR ファイルを読み込めます。

一部のRuby拡張をロードする場合、Python環境で説明したPermGenストレージの問題が同様に生じることがあり、同じ方法で解決できます。

独自の拡張を作成

独自のBurpの拡張を作成するためのヘルプは、メインの拡張に関するドキュメントと、BAppストアに拡張を投稿するためのガイドを参照してください。

Burp Extender API

APIタブには、Burp拡張の作成に使用できるAPIの詳細があります。リストには、実行しているBurpのバージョンで利用可能なAPIが表示されています。表示したいインタフェースの名前をリストから選択すると、インタフェースのコードがすべて表示されます。

インタフェースファイルを保存Javadocファイルを保存ボタンでこれらのファイルをローカルにコピーし、拡張の開発時に利用できます。

拡張開発者向けの注意

拡張から新しいリクエストを発行する場合、HTTP/2フォーマットを使ったケトルなリクエストを自由に送信できます。これにより、HTTP/2専用の脆弱性をテストするための拡張を開発できます。

ただし現在のところ、Burpによって発行されたケトルなリクエストを、拡張からは変更できません。これは、APIを介した場合には正規化されたHTTP/1スタイルの表現にしかアクセスできないためです。