16
15

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の設定ファイルをチームで共有し,設定を共通化するのも良いが,疎通確認のために一時的に設定を変更することが自分はよくある。
自分はチェックするということが苦手なので,AIエージェントにダブルチェックしてもらうのは結構良いのではないかと思っている。

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

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

image.png

設定ミスを探す

しょうもない設定ミスのせいで通信が飛ばなくなったと誤解してあれこれ試してしまうことがある。
(最近あったのだと,Intruderをオンにしているのを忘れていたとか)
こういったイージーミスに時間をかけてしまうのは勿体ないので,素直にBurp MCPに調査を依頼しよう

example.comにBurp経由で疎通できないのですが,設定ミス等ありますか?

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

Postmanでやれよと言われたらそれまでだが,repeaterを使って連続してリクエストを飛ばせると診断の効率があがるのではないだろうか。

ユースケースは以下のような状況を想定している。

  1. カートに商品を追加
  2. カートの商品を決済

この場合,カートに商品を追加を実施しない限り,カートの商品を決済するリクエストの検証をすることができない。
BurpのRepeater機能は連続して別のリクエストを飛ばすような仕組みはないので(Extensionsであるかも)診断したい対象に対して前処理が多いとかなり手間に感じる。
このような状況では,Postmanを使って一連のリクエストを一括で送信できるようにしていたが,スクリプトを用意するのが地味に面倒だったので,Burp MCPを使ってやれるなら工数削減できそうである。

リクエストは送ることができるが,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の方が出力はみやすいと自分は感じる。

16
15
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
16
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?