Burp MCP Serverを使って自然言語でBurpを操作して脆弱性診断を一部自動化したい #Security - Qiita

これは何?

最近流行りの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

割とMCP Client側でツールを起動するパターン(stdio接続)が多いが、
Burp MCP Serverの場合はBurp側でサーバが起動されている(SSE)。
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でなくなった場合にはそのパラメータを再度設定しなおしてください。


おまけ

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

一応動くが出力がイケてない気はする。



フラッグシティパートナーズ海外不動産投資セミナー 【DMM FX】入金

Source link