5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Burp MCP Serverを使い、自然言語でBurpを操作する 脆弱性診断を自動化したい

Last updated at Posted at 2025-04-25

これは何?

最近流行りのMCP(Model Context Protocol)使うといろんな操作をAIエージェントにやってもらえるようになる。

今回は脆弱性診断等で使用されるBurp SuiteBurp 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を選択する。
image.png

「MPC」などで検索してインストールする。

image.png

MCPというタブが追加されている。
image.png

公式リポジトリをクローンしてgradleでビルドして.jarを作成する方法も可能。

割とMCP Client側でMCP Serverを起動するパターン(STDIO接続)が多く、自分は最初STDIO接続でMCP ClientとBurp MCP Serverを接続しようとしていた。
だが、Burp MCP Serverの場合はBurp側でサーバが起動されている(SSE)なのでMCP Client側で接続先を指定するだけで使用できた。
image.png

そのため、後述するMCP Clientの設定では起動コマンドを設定していない。
portswiggerのmcp-server等を見ると起動コマンドが例で書いてあったが自分はつかわなかった。

VS Code(MCP Client)の設定

  1. Roo-Codeをインストールする
  2. AnthoropicのAPIキーをセットする。参考
  3. mcp.jsonを記載する GitHubのissueが参考になった
    image.png

image.png

{
  "mcpServers": {
    "burp": {
      "url": "http://localhost:9876/sse",
      "disabled": false,
      "autoApprove": []
    }
  }
}

設定が間違っている等でうまく接続できないと赤文字でエラーがでる。
image.png


実際に試してみる

とりあえず,repeaterを使ってみる

Roo-Codeからタスクを依頼してみる。MCPを使わずに解決されると困るのでMCPを使うように明記した。
(システムプロンプトに記載してもよい)

Burp MCP Serverを使ってrepeaterにgoogle.comへアクセスする設定をいれてください。ただし,User-Agentをsigmaにして

image.png

image.png


実務での使いみちを検討

Burpの設定変更

MCPタブからEnable tools that can edit your configにチェックするとコンフィグをいじれるようになるらしい。

image.png

BurpのMCP Serverを使ってproxyのportを8080から8008に変更して

image.png

おおお!ちゃんとできた。

Scope設定の自動化

誤って余計なところにリクエストが飛ばないようにScopeを設定し,指定したFQDN以外へ通信が飛ばないようにしたりすることもあるので,数が多い時などはAIにやってもらえると嬉しいかも。

例: 「以下のurlをscopeに設定してください。urlは以下です」

正しい設定ができているかのダブルチェック

Burp MCPを使って設定確認を行ってください。

  1. Drop all out-of scope requestsにチェックがついているか
  2. proxyのportが8008か
  3. scopeが設定されているか
    違反しているものがあれば教えて

image.png

会社によってオフィシャルでやるべき設定があるのであればBurpの設定ファイルを共通化するのでも良いが,
使っているうちに設定を変える必要がある場面もあるので,AIエージェントにダブルチェックしてもらうのは結構良いのではないだろうか。

repeaterから連続してリクエストを送る

Postmanでやれよと言われたらそれまでだが,repeaterを使って連続してリクエストを飛ばしたい。
以下はイメージ。

  1. ログインする
  2. 取得したトークンをリクエストにつけてコミット処理を実行

リクエストは送ることができるが,http historyやRepeaterのresponseにはログが残らない。なぜなら,MCP ServerはBurp自体を操作しているのではなく,Burp APIを使ってBurpを操作しているためである。

image.png

image.png

だが,変わりにLoggerタブにログが出力されている。

image.png

雑な疎通確認

これもBurpでやらなくてもいい案件な気はするが,
診断対象のurl一覧にアクセスして疎通できるかの一次切り分けをやってもらうと楽かもしれない。

以下のurlにアクセスして,アクセスできるか確かめてください。対象は以下です。一部のurlにはログイン後しかアクセスできないので,アクセスできなかった部分はログイン後に再アクセスしてみてください。

リクエストを通すのに不要なパラメータを削る

AIを使わなくても機械的にできそうとは思いつつ。

リクエストに含まれるパラメータのうち,リクエストが成功するのに不要なパラメータを削っておくとパラメータ改ざんが楽になりそう

このリクエストに含まれるパラメータを1つずつ削除してリクエストを再送してみてください。再送した結果,レスポンスが200 OKでなくなった場合にはそのパラメータを再度設定しなおしてください。


感想等

Burp MCP Serverでしかできないわけでない脆弱性診断自動化案しか現状思いついていないが、自動化のシステムを作る余力がない場合もあるだろう。
雑にMCPで自動化してみて、効果が感じられたら真面目に自動化するみたいな進め方をする上でBurp MCP ServerはいわゆるPOC的に使えると感じた。


おまけ

GitHub CopilotのMCP機能を使って同じことをやる方法を書いておく。
API代を気にせずに試したい人向けの設定を記載しておく。

  1. CopilotをAgentモードにする

  2. settings.jsonに以下を追加する

      "mcp": {
        "servers": {
          "burp": {
            "type": "sse",
            "url": "http://127.0.0.1:9876/sse",
          }
        }
      },
    
  3. CopilotのChat欄にMCPのタブが追加されているのでクリックすると使用可能なツールが増える。
    image.png
    image.png

  4. outputでエラーがでてなさそうなら使える。
    image.png

一応動くが、Roo-Codeの方が出力はみやすい。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?