これは何?
最近流行りのMCP(Model Context Protocol)使うといろんな操作をAIエージェントにやってもらえるようになる。
今回は脆弱性診断等で使用されるBurp SuiteをBurp MCP Serverを使って自然言語で操作してみた。
脆弱性診断業務の一部が自動化できると嬉しいので,良いアイデアをお持ちの方がいればぜひコメントお願いします。
環境
- ホストOS: Windows 11(Ubuntuでも動作確認まではやりましたが,業務利用を見据えてWindowsをメインに記載します)
- Burp Suite Community Edition v2025.3.3
- MCP Clientト: Roo-Code
- MCP Server: Burp MCP Server
Roo-Codeで試しましたが,お得に試したい
GitHub Copilot使用者向けの設定もおまけに記載しています。
セットアップ
Burp Suiteのインストール
- 公式からインストールできる
BApp StoreからBurp MCP Serverをインストールする
ExtensionsタブからBApp Storeを選択する。
「MPC」などで検索してインストールする。
公式リポジトリをクローンしてgradleでビルドして.jarを作成する方法も可能。
割とMCP Client側でMCP Serverを起動するパターン(STDIO接続)が多く、自分は最初STDIO接続でMCP ClientとBurp MCP Serverを接続しようとしていた。
だが、Burp MCP Serverの場合はBurp側でサーバが起動されている(SSE)なのでMCP Client側で接続先を指定するだけで使用できた。
そのため、後述するMCP Clientの設定では起動コマンドを設定していない。
portswiggerのmcp-server等を見ると起動コマンドが例で書いてあったが自分はつかわなかった。
VS Code(MCP Client)の設定
- Roo-Codeをインストールする
- AnthoropicのAPIキーをセットする。参考
- mcp.jsonを記載する GitHubのissueが参考になった
{
"mcpServers": {
"burp": {
"url": "http://localhost:9876/sse",
"disabled": false,
"autoApprove": []
}
}
}
動作確認
とりあえず,repeaterを使ってみる
Roo-Codeからタスクを依頼してみる。MCPを使わずに解決されると困るのでMCPを使うように明記した。
(システムプロンプトに記載してもよい)
Burp MCP Serverを使ってrepeaterにgoogle.comへアクセスする設定をいれてください。ただし,User-Agentをsigmaにして
実務での使いみちを検討
Burpの設定変更
MCPタブからEnable tools that can edit your configにチェックするとコンフィグをいじれるようになるらしい。
BurpのMCP Serverを使ってproxyのportを8080から8008に変更して
おおお!ちゃんとできた。
Scope設定の自動化
実務で脆弱性診断をする場合,誤って余計なところにリクエストが飛ばないようにScopeを設定し,指定したFQDN以外へ通信が飛ばないように設定することがある。
数が多い時などはAIにやってもらえると嬉しいかも。
例: 「以下のurlをscopeに設定してください。urlは以下です」
正しい設定ができているかのダブルチェック
Burpの設定ファイルをチームで共有し,設定を共通化するのも良いが,疎通確認のために一時的に設定を変更することが自分はよくある。
自分はチェックするということが苦手なので,AIエージェントにダブルチェックしてもらうのは結構良いのではないかと思っている。
Burp MCPを使って設定確認を行ってください。
- Drop all out-of scope requestsにチェックがついているか
- proxyのportが8008か
- scopeが設定されているか
違反しているものがあれば教えて
設定ミスを探す
しょうもない設定ミスのせいで通信が飛ばなくなったと誤解してあれこれ試してしまうことがある。
(最近あったのだと,Intruderをオンにしているのを忘れていたとか)
こういったイージーミスに時間をかけてしまうのは勿体ないので,素直にBurp MCPに調査を依頼しよう
example.comにBurp経由で疎通できないのですが,設定ミス等ありますか?
repeaterから連続してリクエストを送る
Postmanでやれよと言われたらそれまでだが,repeaterを使って連続してリクエストを飛ばせると診断の効率があがるのではないだろうか。
ユースケースは以下のような状況を想定している。
- カートに商品を追加
- カートの商品を決済
この場合,カートに商品を追加を実施しない限り,カートの商品を決済するリクエストの検証をすることができない。
BurpのRepeater機能は連続して別のリクエストを飛ばすような仕組みはないので(Extensionsであるかも)診断したい対象に対して前処理が多いとかなり手間に感じる。
このような状況では,Postmanを使って一連のリクエストを一括で送信できるようにしていたが,スクリプトを用意するのが地味に面倒だったので,Burp MCPを使ってやれるなら工数削減できそうである。
雑な疎通確認
これもBurpでやらなくてもいい案件な気はするが,
診断対象のurl一覧にアクセスして疎通できるかの一次切り分けをやってもらうと楽かもしれない。
以下のurlにアクセスして,アクセスできるか確かめてください。対象は以下です。一部のurlにはログイン後しかアクセスできないので,アクセスできなかった部分はログイン後に再アクセスしてみてください。
リクエストを通すのに不要なパラメータを削る
AIを使わなくても機械的にできそうとは思いつつ。
リクエストに含まれるパラメータのうち,リクエストが成功するのに不要なパラメータを削っておくとパラメータ改ざんが楽になりそう
このリクエストに含まれるパラメータを1つずつ削除してリクエストを再送してみてください。再送した結果,レスポンスが200 OKでなくなった場合にはそのパラメータを再度設定しなおしてください。
感想等
Burp MCP Serverでしかできないわけでない脆弱性診断自動化案しか現状思いついていないが、自動化のシステムを作る余力がない場合もあるだろう。
雑にMCPで自動化してみて、効果が感じられたら真面目に自動化するみたいな進め方をする上でBurp MCP ServerはいわゆるPOC的に使えると感じた。
また,設定周りの変更など場合によっては手動でやるよりも早いので今後も良い使いみちを探したい。
おまけ
GitHub CopilotのMCP機能を使って同じことをやる方法を書いておく。
API代を気にせずに試したい人向けの設定を記載しておく。
-
CopilotをAgentモードにする
-
settings.jsonに以下を追加する
"mcp": { "servers": { "burp": { "type": "sse", "url": "http://127.0.0.1:9876/sse", } } },
一応動くが、Roo-Codeの方が出力はみやすいと自分は感じる。