
Burp Suite 拡張機能で、Montoya API 全体をローカル REST API として公開し、Swagger UI を備えています
BurpのAPI/MCPは限定的 - reburpは、完全なMontoya APIをローカルで提供されるOpenAPI REST APIとして公開するBurp Suite拡張機能であり、AIエージェント向けに最適化されています。
Issues |
reburpはBurp Suiteをスクリプトで操作できるものに変えます。Java拡張機能としてロードされ、
Montoya API
をhttp://127.0.0.1:9090上のHTTP REST APIとして提供し、OpenAPI仕様とSwagger UIを備えています。
Burpでクリックする操作 - プロキシ履歴の読み取り、リクエストの送信、スコープの編集、スキャンの実行、トークンのデコード - はすべて、エージェントやcurlコマンドで実行できるJSON呼び出しになります。
これはburp-interactionエージェントスキルと組み合わせることで、AIアシスタントがBurpを直接操作できるようになります。
エージェントがREST経由で操作できるようになるBurpの機能:
Releasesから最新のreburp-*.jarを取得するか、
ソースからビルドします(Java 17+が必要)。
各reburpリリースは、最低限のBurp Suite (Montoya)バージョンに対してビルドされています。古いBurpでは、 Releasesから対応するjarを取得してください。
git clone https://github.com/forefy/reburp.git
cd reburp
./gradlew shadowJar
# Output: build/libs/reburp.jar (plus a versioned copy, reburp-<version>.jar)
バージョン付きのコピーではなくreburp.jarをロードしてください。Burpは拡張機能をロード元のパスから
リロードしますが、バージョン付きの名前はリリースごとに変わるため、バージョンなしの名前を使うことで
アップグレード後もリロードが継続し、以前のビルドに知らずに留まることがなくなります。
JAVA_HOMEが設定されていない場合は、JDKを指定してください:
JAVA_HOME=/path/to/jdk17 ./gradlew shadowJar
build/libs/reburp.jar (またはReleasesからダウンロードしたreburp-*.jar)Burpにreburpタブが表示され、すべてのREST呼び出しが発生時に表示されます。
各行が1つのREST呼び出しです。選択するとAPIリクエストとレスポンス、さらにreburpがユーザーに代わって ターゲットに送信したリクエストとレスポンスが表示されます。
ロード後、ブラウザで開いてください:
仕様はリクエストとレスポンスの形式に関する信頼できる情報源です。
| グループ | プレフィックス | ハイライト |
|---|---|---|
| Status | /api/status | 拡張機能情報、Burpバージョン |
| Proxy | /api/proxy/ | 履歴、検索、注釈、インターセプトの切り替え、WebSocket履歴 |
| Site Map | /api/sitemap/ | 一覧、検索 |
| Scope | /api/scope/ | URLがスコープ内か確認、スコープルールの追加/削除 |
| HTTP | /api/http/ | HTTP/1.1 & HTTP/2の送信、認証トークン注入、パース、差分、パラメータ、リフレクション、挿入ポイント、Cookie |
| Messages | /api/http/message/ | リクエストとレスポンスの検査と書き換え: ヘッダー、パラメータ、マーカー、MIMEタイプ、タイミング |
| Scanner | /api/scanner/ | イシュー、監査/クロールの開始、タスクステータス (Proのみ) |
| Collaborator | /api/collaborator/ | ペイロードの生成、インタラクションのポーリング (Proのみ) |
| Repeater / Intruder | /api/repeater/, /api/intruder/ | RepeaterとIntruderへのリクエスト送信 |
| Request Engine | /api/http/engine/ | 高スループット非同期リクエストエンジン: リソースプール、同時実行制限、スロットル、リトライ、ライブ統計、一時停止/再開/キャンセル、結果 (Burp 2026.x) |
| Config | /api/config/ | プロジェクト & ユーザーオプションの取得/設定、タスクエンジンの状態 |
| Match & Replace | /api/proxy/match-replace/ | プロキシのマッチアンドリプレースルールの一覧、追加、削除 |
| Sessions | /api/sessions/ | セッション処理ルールの一覧と削除 (Burpにはヘッダー追加アクションがない) |
| Engagement | /api/engagement/ | CSRF PoCジェネレーター、コンテンツ探索、参照の検索、デコーダーへの送信 |
| Bambda | /api/bambda/ | Bambdaスクリプトのインポート、フィルタチェーンの生成 |
| Organizer | /api/organizer/ | アイテムの一覧、Organizerへのリクエスト送信 |
| Issues | /api/issues/ | カスタム監査イシューの作成 |
| Events | /api/events/ | パッシブトラフィックオブザーバーのオン/オフ、キャプチャしたイベントの読み取り |
| Extension Data | /api/extension-data/ |
# Is the extension up?
curl -s http://127.0.0.1:9090/api/status
# Last 10 proxy entries
curl -s "http://127.0.0.1:9090/api/proxy/history?limit=10"
# Send a request through Burp
curl -s http://127.0.0.1:9090/api/http/send \
-H 'Content-Type: application/json' \
-d '{"host":"example.com","port":443,"use_https":true,"method":"GET","path":"/"}'
# Add a host to scope
curl -s http://127.0.0.1:9090/api/scope/include \
-H 'Content-Type: application/json' \
-d '{"url":"https://example.com"}'
RESTサーバーは**127.0.0.1のみにバインドされますが、ポートは認証なし**で、任意のオリジンに
応答します。localhost:9090に到達できるものは何でもBurpを操作でき、ブラウザで開いているWebページも
含まれます。このポートは信頼されたローカル専用として扱い、ループバック以外に公開しないでください。
そのため、OSコマンド実行はデフォルトで無効です。/api/utils/shell/executeと
/api/utils/shell/execute-rawは、拡張機能がBurp自身のプロセス環境で以下を検出しない限り403を返します:
REBURP_ENABLE_SHELL=1
これを設定すると、ポートに到達できる任意のオリジンがホスト上でリモートコード実行を取得します。
それを受け入れる場合にのみ有効にしてください。すべての呼び出しは拡張機能の出力タブに書き込まれます。
GET /api/utils/shell/statusは有効かどうかを報告し、有効であることを要求しません。
「完全なMontoya API」という主張は、CIのビルドワークフローが
すべてのプッシュで実行し、マッピング可能なメソッドが未公開のまま残っている場合に失敗する
tools/api_coverage.pyによって機械的に検証されます。動作は
tools/smoke_test.pyによってロードされた拡張機能に対して別途検証されます。
9090にハードコードされています。必要に応じてBurpRestApiExtension.ktのportを変更して再ビルドしてください。compileOnlyです - バンドルされておらず、実行時にBurpが提供します。{ "error": "..." }を返します。OpenApiSpec.ktとdocs/内のフラグメントから組み立てられます。ルートグループを追加するには、
*Paths()と*Schemas()フラグメントを書き、docs/OpenApiSpecExtra.ktにリストしてください。イシューとプルリクエストを歓迎します。PRを開く前にpython3 tools/api_coverage.pyと
./gradlew shadowJarを実行してください。新しいルートグループは、ドキュメントが完全に保たれるよう、
OpenAPIフラグメントとともに提供されるべきです。
| Burpプロジェクトファイルに保持される型付きキー/バリューストレージ |
| Preferences | /api/preferences/ | 型別の永続化された拡張機能設定 |
| Logging | /api/logging/ | 拡張機能の出力タブとエラータブ、およびBurpのイベントログへの書き込み |
| Activity Log | /api/log/ | reburp自身の永続化された呼び出しログのクエリ |
| AI | /api/ai/ | Burp AIのステータスとチャット (利用可能な場合) |
| Meta | /api/meta/ | Burpバージョンコンポーネント、拡張機能ロード情報、列挙語彙 |
| Utilities | /api/utils/ | URLエンコード/デコード、base64、ハッシュ、JWTデコード、ランダム文字列、解凍 |
| Numbers | /api/utils/number/ | 2進数、8進数、10進数、16進数、および任意の基数間の変換 |
| JSON | /api/utils/json/ | ポインタによる検証、読み取り、編集、構造の検査、正規化 |
| Bytes | /api/utils/bytes/ | バイトバッファの検索、スライス、追加、割り当て、検査 |
| Ranking | /api/utils/rank | 各交換がどれだけ異常に見えるかでプロキシ履歴をランク付け |
| Shell | /api/utils/shell/ | OSコマンド実行。デフォルトでは無効、セキュリティを参照 |