BurpMCP:基于MCP协议实现AI辅助渗透测试的实践指南
1. 项目概述:当Burp Suite遇上MCP,开启AI辅助渗透测试新范式
如果你是一名渗透测试工程师、漏洞猎人或者应用安全研究员,那么Burp Suite这个“瑞士军刀”你一定不陌生。从手动抓包改包,到利用Intruder进行爆破,再到借助Scanner进行自动化扫描,Burp几乎贯穿了我们日常工作的每一个环节。然而,面对日益复杂的Web应用和API,即便是经验丰富的测试者,有时也会感到力不从心——你需要同时关注认证逻辑、业务流、输入点、潜在的逻辑缺陷,大脑就像一台多核处理器,时刻处于高负载状态。
最近几年,大语言模型(LLM)的崛起给我们带来了新的思路。我们开始尝试用ChatGPT、Claude、Gemini来辅助分析代码、生成Payload、甚至构思攻击链。但这个过程往往是割裂的:你在Burp里看到一个可疑的请求,复制到聊天窗口,等AI给出建议,再手动回到Burp里构造和发送请求。这种来回切换不仅效率低下,更重要的是打断了你的“黑客心流”,让思考变得碎片化。
BurpMCP的出现,正是为了解决这个痛点。它不是一个简单的“AI插件”,而是一座桥梁,一座将Burp Suite这个强大的实战环境,与Claude、Cursor等现代AI助手背后的Model Context Protocol连接起来的桥梁。简单来说,它让AI助手能够“看到”你Burp里的流量,“操作”你的Burp发送请求,并“理解”返回的结果。这意味着,你可以用自然语言指挥AI助手,让它在你设定的边界内,进行半自主甚至自主的漏洞探测,而你,则像一个指挥官,坐在控制台前,审视着AI的每一步操作和每一次反馈。
想象一下这个场景:你在测试一个陌生的Web应用,发现了一个复杂的多步骤订单流程。你只需将关键的几个请求(登录、添加商品、提交订单)右键发送到BurpMCP保存起来。然后,你打开Claude Desktop,对它说:“分析我刚保存的三个请求,这是一个电商下单流程。请尝试寻找逻辑漏洞,比如在未支付的情况下修改订单状态为‘已完成’,或者尝试绕过库存检查进行超买。你可以基于这些保存的请求进行修改和重放,所有新请求都会记录在Burp的日志里供我查看。”接下来,你就可以一边喝咖啡,一边在Burp的Request Logs标签页里,实时观察Claude是如何思考、如何构造Payload、服务器又是如何响应的。这不再是简单的问答,而是真正的AI-Augmented Testing。
2. 核心设计思路与MCP协议解析
2.1 为什么是MCP?不仅仅是另一个API
在BurpMCP之前,社区里已经有一些尝试将AI集成到安全工具中的项目,比如利用OpenAI API直接解析请求/响应。那么,为什么BurpMCP选择了Model Context Protocol这条路?这背后是对未来AI工作流的前瞻性思考。
MCP的核心思想是标准化AI与工具之间的对话。你可以把它想象成AI世界的“USB协议”。在没有MCP之前,每个AI助手(Claude Desktop, Cursor, Dive等)想要连接一个外部工具(比如Burp),都需要开发者为其编写特定的插件或适配器,工作量大且不通用。有了MCP,工具方(BurpMCP)只需要实现一个标准的MCP Server,而所有支持MCP协议的AI客户端(Claude, Cursor等)就能立即识别并使用它提供的所有“能力”(Tools)。
对于渗透测试者来说,这带来了几个关键优势:
- 工具无关性:你不必被绑定在某一个特定的AI聊天界面里。今天你可以用Claude Desktop来驱动测试,明天觉得Cursor的编码上下文更好用,可以无缝切换。BurpMCP提供的功能对它们来说是相同的。
- 功能可发现性:AI助手能动态地“发现”BurpMCP提供了哪些工具(如“发送HTTP请求”、“获取保存的请求”),并理解每个工具需要什么参数。这意味着你可以用非常自然的方式下达指令,AI自己就知道该调用哪个功能。
- 安全的执行沙箱:MCP协议规定了清晰的边界。AI只能通过你明确提供的工具来操作,并且你能在Burp的界面里看到所有交互日志。这避免了让AI拥有不受限制的系统访问权限,将风险控制在可审计、可复现的范围内。
BurpMCP的设计哲学非常清晰:它不试图取代渗透测试者,而是增强他们。它把繁琐、重复的请求构造、参数遍历、基础逻辑验证等工作交给AI,让人脑解放出来,专注于更高层次的策略制定、上下文关联和复杂逻辑漏洞的挖掘。
2.2 BurpMCP的四大核心功能模块拆解
为了实现上述目标,BurpMCP在Burp Suite中构建了四个紧密协作的功能模块,共同构成了一个完整的AI辅助测试工作流。
2.2.1 请求仓库与上下文管理这是整个工作流的起点。渗透测试中,我们经常需要反复操作一组有逻辑关联的请求(例如:登录->获取令牌->访问敏感功能)。BurpMCP的“Saved Requests”标签页就是为这个场景设计的。你可以通过右键菜单,将Burp Proxy、Repeater、Scanner中的任何请求一键保存至此。每个保存的请求都附带一个“Notes”字段,这是给AI提供额外上下文的关键。例如,你可以在保存一个“修改用户邮箱”的请求时,在Notes里写上:“此功能需要管理员权限,但普通用户的请求中有一个isAdmin参数疑似可绕过”。这样,当AI后续分析这个请求时,就能获得远超原始HTTP数据的信息,做出更智能的判断。
2.2.2 AI驱动的请求引擎这是BurpMCP的“手”。它通过MCP向AI客户端暴露了两个核心工具:send-http-request和resend-saved-request。前者允许AI根据你的指令,凭空构造一个全新的HTTP/1.1或HTTP/2请求并发送,结果会实时显示在Burp的“Request Logs”中,就像你手动在Repeater里操作一样。后者则更强大,它允许AI基于已保存的请求模板,进行正则表达式替换后重发。这相当于为AI配备了一个“可编程的Repeater”,你可以命令它:“针对保存的搜索请求,遍历这个参数,尝试SQL注入Payload列表”,AI便会自动执行参数替换和批量发送。
2.2.3 协同测试与带外检测高级漏洞,如SSRF、XXE、Blind SQLi,往往依赖带外(Out-of-Band)技术来验证。Burp Suite自带的Collaborator功能是神器。BurpMCP通过generate-collaborator-payload和retrieve-collaborator-interactions这两个工具,将Collaborator的能力也赋予了AI。现在,你可以命令AI:“在刚刚的XXE Payload里,插入一个Burp Collaborator域名,然后告诉我是否有DNS查询回来。” AI能够生成唯一的Collaborator地址,将其嵌入Payload,发送请求,并稍后查询交互记录,从而自主完成OOB漏洞的探测闭环。
2.2.4 透明化日志与调试信任是合作的基础。BurpMCP的“Server Logs”标签页记录了所有通过MCP协议进出的原始消息。你可以在这里看到AI发送的每一个工具调用请求(包括具体参数),以及服务器返回的每一个结果或错误。这不仅是调试AI错误行为的利器(比如AI忘了加Content-Length头),更是你理解AI“思考过程”、审计其操作安全性的重要窗口。所有由AI发起的请求,都会带有醒目的标记,与人工操作区分开来。
3. 实战部署与多客户端配置指南
3.1 环境准备与扩展安装
BurpMCP的运行依赖于Java环境(Burp Suite本身需要)和Python环境(用于STDIO桥接)。首先,确保你的系统满足以下条件:
- Burp Suite Professional / Community Edition:这是基础。社区版功能足够进行基础测试。
- Java Runtime Environment (JRE) 8+:通常安装Burp时已自带或会提示安装。
- Python 3.7+和pip:如果你计划使用Claude Desktop等通过STDIO连接的客户端,则需要安装。
安装BurpMCP扩展非常简单:
- 前往项目的GitHub Releases页面,下载最新的
burpmcp-*.jar文件。 - 打开Burp Suite,进入Extender标签页,然后点击Add按钮。
- 在弹窗中,选择Extension type为 “Java”,然后浏览并选中你下载的JAR文件。
- 点击Next,Burp会加载扩展。加载成功后,你会在Extender的“Extensions”列表里看到BurpMCP,同时Burp的顶部菜单栏会多出一个“BurpMCP”的标签页。
注意:首次加载后,BurpMCP的MCP服务器默认会在
localhost:8181端口启动,使用SSE传输。你可以在BurpMCP标签页的“Settings”子标签中修改主机和端口,但大多数情况下默认即可。
3.2 配置不同的MCP客户端
BurpMCP的强大在于其兼容性。以下是针对不同AI客户端的详细配置方法。
3.2.1 配置ClineCline是一个新兴的、对开发者友好的AI助手,原生支持MCP且配置直观。
- 找到Cline的配置文件。通常位于
~/.cline/config.json(Linux/macOS)或%APPDATA%\.cline\config.json(Windows)。 - 在
mcpServers对象中添加如下配置:{ "mcpServers": { "burpmcp": { "autoApprove": [], // 可以在此添加工具名以实现自动批准调用,初期建议为空以手动确认 "disabled": false, "timeout": 30, // 工具调用超时时间,单位秒 "url": "http://localhost:8181/mcp/sse", // BurpMCP服务器地址 "transportType": "sse" // 传输协议 } } } - 保存配置文件并重启Cline。重启后,你应该能在Cline的界面中看到它已经识别到了BurpMCP提供的工具。
3.2.2 配置Claude DesktopClaude Desktop默认使用STDIO方式连接MCP服务器,因此我们需要一个“桥接”脚本将SSE转换为STDIO。这是最常用但也稍显复杂的配置。
- 下载桥接脚本:从BurpMCP的GitHub仓库中下载
stdio-bridge.py脚本,保存到本地某个目录,例如~/tools/。 - 安装Python依赖:打开终端,执行
pip3 install typer mcp。mcp库是Anthropic官方提供的MCP Python SDK。 - 定位Claude配置:Claude Desktop的配置文件路径通常为:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json如果文件不存在,可以手动创建。
- macOS:
- 编辑配置文件:添加以下内容。请务必将
args中的路径替换为你实际存放stdio-bridge.py的路径。{ "mcpServers": { "BurpMCP": { "command": "python3", "args": ["/absolute/path/to/your/stdio-bridge.py", "http://localhost:8181/mcp/sse"], "env": {} } } }实操心得:在Windows上,
python3可能需要替换为python或py,具体取决于你的Python安装方式。建议在终端中先用python --version确认命令。另外,使用绝对路径可以避免很多因工作目录引起的找不到脚本的问题。 - 保存配置并完全重启Claude Desktop(不仅仅是关闭窗口,最好从任务管理器/活动监视器彻底退出再启动)。重启后,当你新建一个对话时,Claude应该会在开场白中提示你它已经连接了BurpMCP,并列出可用的工具。
3.2.3 配置Cursor等编辑器插件像Cursor这类集成在IDE中的AI助手,其MCP配置方式与Claude Desktop类似,也是通过编辑JSON配置文件。你需要查阅对应编辑器插件的文档,找到其MCP配置的位置(通常也在用户配置目录下),然后添加与Claude Desktop类似的mcpServers配置项,指向桥接脚本。
3.3 验证连接与初步测试
配置完成后,进行一个简单的连接测试至关重要。
- 确保Burp Suite正在运行,且BurpMCP扩展已加载。
- 启动你的AI客户端(Cline或Claude Desktop)。
- 在AI客户端的聊天窗口中,输入一个简单的测试指令,例如:“列出你现在可以使用的所有工具。”
- 如果配置正确,AI应该会回复它从BurpMCP发现的一系列工具,例如
get-saved-requests,send-http-request等。 - 接下来,在Burp Suite中,用Proxy拦截或手动在Repeater中构造一个简单的GET请求(比如访问
http://httpbin.org/get),然后右键点击该请求,选择Extensions -> Send to BurpMCP。 - 回到AI客户端,输入:“获取当前保存的请求。” AI应该能调用工具,并返回你刚刚保存的请求详情。
如果以上步骤都成功,恭喜你,BurpMCP已经成功部署并连接!你的AI助手现在拥有了直接与Burp Suite交互的能力。
4. 核心工作流与高级使用技巧
4.1 基础工作流:从保存请求到AI分析
让我们通过一个完整的例子,来感受BurpMCP如何融入你的日常测试。假设我们正在测试一个博客系统。
手动侦察与请求保存:你首先手动浏览网站,发现了几个关键功能点:用户登录 (
POST /api/login)、发布文章 (POST /api/post)、评论文章 (POST /api/comment)。你使用Burp Proxy拦截这些请求,并分别右键Send to BurpMCP。在保存“发布文章”请求时,你在Notes里写道:“此接口需要Authorization: Bearer <token>头,且对title和content字段进行HTML过滤。”向AI提供上下文与任务:打开Claude,你可以这样开始:“我正在进行一个博客系统的安全测试。我已经将登录、发布文章、评论三个关键请求保存到了BurpMCP中。请你先获取这些保存的请求,分析其认证机制和参数结构。然后,基于‘发布文章’请求,尝试测试以下漏洞:a) XSS:尝试在
title和content字段插入常见的XSS Payload,观察过滤规则。b) CSRF:检查请求是否依赖Cookie认证且缺少CSRF Token。c) 权限提升:尝试用普通用户登录后的token,去修改一篇由管理员发布的文章(你需要先获取一篇文章的ID)。请逐步进行,并告诉我每一步的发现。”观察与引导:AI会开始工作。你可以在BurpMCP的“Request Logs”里实时看到它发送的每一个测试请求。例如,它可能会先调用
get-saved-requests,然后调用resend-saved-request,将发布文章的请求中的content参数替换为<script>alert(1)</script>并发送。你可以根据服务器的响应(如返回了过滤后的文本或错误),在聊天中给予AI反馈:“上一个XSS Payload被过滤了,服务器返回了<script>alert(1)</script>,看起来是直接转义。尝试使用<img src=x onerror=alert(1)>或者SVG标签。”结果汇总与深化:AI在完成一轮测试后,会汇总它的发现。你可以基于它的报告,决定下一步是深入挖掘某个点(“针对这个JSON解析错误,尝试构造一个更复杂的JSON注入Payload”),还是转向其他功能模块。
这个工作流的核心是“人机协同”:你负责制定战略、提供关键上下文、做出高级判断;AI负责执行战术、进行大量重复性测试、快速枚举可能性。
4.2 高级技巧:利用正则替换进行高效测试
resend-saved-request工具的replacements参数是其精髓所在。它接受一个“查找-替换”对的列表,支持正则表达式。这为自动化测试打开了大门。
场景:测试一个搜索接口 (GET /search?q=keyword&page=1),你想测试q参数是否存在SQL注入。
- 首先,将包含
q=test的请求保存到BurpMCP。 - 向AI提供一份SQL注入测试Payload列表(可以从Burp的Intruder预置字典中获取,或自己整理),例如:
',' OR '1'='1,' UNION SELECT null, version() --等。 - 给AI指令:“针对保存的搜索请求,对
q参数进行SQL注入测试。使用以下Payload列表进行替换:[...Payload列表...]。每次替换后发送请求,并关注响应状态码、长度和内容的变化,特别是数据库错误信息。”
AI可以轻松地编写一个循环逻辑(在它的“脑中”),依次将每个Payload通过正则替换应用到请求中并发送。你无需手动在Intruder里设置位置和Payload,也无需编写Python脚本。AI成为了一个智能的、可自然语言编程的Intruder。
注意事项:正则替换是全局的。如果你的参数值
test也出现在其他位置(如Cookie或Header中),可能会导致意外替换。建议在保存原始请求时,使用一个唯一且不太可能在其他地方出现的字符串作为测试值,比如q=UNIQUE_TEST_VALUE_123。然后在替换时,精确匹配这个字符串:pattern: “UNIQUE_TEST_VALUE_123”, replacement: “' OR '1'='1”。
4.3 协作测试:让AI发现盲点
Burp Collaborator是检测SSRF、Blind SQLi等漏洞的黄金标准。BurpMCP让AI也能使用它。
操作流程:
- 你命令AI:“生成一个新的Burp Collaborator payload。”
- AI调用
generate-collaborator-payload工具,获得一个类似xyz123.burpcollaborator.net的域名。 - 你指示AI:“在之前保存的‘获取用户信息’的请求中,有一个
avatarUrl参数看起来是用户可控的URL。尝试将其替换为Collaborator payload,然后重发请求,以测试是否存在SSRF。” - AI执行替换和发送。
- 等待几秒后,你命令AI:“现在,检索一下Collaborator的交互记录。”
- AI调用
retrieve-collaborator-interactions。如果存在SSRF,它会返回一条DNS或HTTP交互记录。
这个过程可以完全由AI自主完成。你可以给它一个更复杂的任务:“对保存的所有包含URL参数的请求,依次进行SSRF测试,使用新生成的Collaborator payload,并记录哪些请求触发了交互。”
5. 避坑指南与常见问题排查
在实际使用中,你会遇到各种问题,以下是我在深度使用后总结的常见坑点和解决方案。
5.1 AI模型本身的“笨拙”行为
这是最常见的问题来源。LLM毕竟不是为精确的协议操作而生的。
问题:忘记关键HTTP头。AI可能会构造一个POST请求,但忘记添加
Content-Type: application/json或Content-Length头,导致服务器返回400错误。- 解决方案:在给AI的指令中明确强调。“请确保在发送POST请求时,总是包含正确的Content-Type和计算准确的Content-Length头。” 你可以在BurpMCP的Server Logs里看到原始请求,如果发现缺失,及时提醒AI纠正。一些更智能的MCP客户端(如Cline)可能会在客户端层面对工具调用进行一些基础的校验和补全。
问题:URL编码错误。AI可能会直接将
&、?、空格等特殊字符放入URL路径或参数值中,而不进行编码。- 解决方案:同样,在指令中明确要求。“所有需要放入URL的变量,请务必进行百分号编码(URL编码)。” 或者,更稳妥的方法是,让AI主要使用
resend-saved-request工具,在已经正确编码的原始请求基础上进行替换,而不是从头构造一个全新的URL。
- 解决方案:同样,在指令中明确要求。“所有需要放入URL的变量,请务必进行百分号编码(URL编码)。” 或者,更稳妥的方法是,让AI主要使用
问题:误解工具参数。例如,
send-http-request工具要求headers是一个字符串数组,每行一个Header: Value。AI有时会错误地提供一个JSON对象。- 解决方案:直接给AI看错误信息。当AI调用失败时,BurpMCP会在Server Logs和AI的回复中返回错误详情。你可以复制这个错误给AI:“你刚才的调用失败了,错误是‘headers must be an array of strings’。请修正你的调用格式。”
5.2 客户端与协议层面的问题
问题:CRLF行结尾丢失。一些MCP客户端在传输文本时,会将
\r\n转换为\n,导致HTTP/1.1请求格式无效。- 解决方案:这是BurpMCP已知的兼容性问题。在BurpMCP的Settings标签页中,启用“Enable LF to CRLF replacement”选项。这样,服务器在收到请求时,会自动将
\n替换回\r\n。但要注意,这会改变原始请求体,绝对不适合用于测试HTTP请求走私等依赖于精确字符的漏洞。在测试这类漏洞时,务必关闭此选项,并确保你的MCP客户端能正确发送CRLF。
- 解决方案:这是BurpMCP已知的兼容性问题。在BurpMCP的Settings标签页中,启用“Enable LF to CRLF replacement”选项。这样,服务器在收到请求时,会自动将
问题:客户端无响应超时。某些客户端在服务器返回错误或长时间无响应时,不会超时,导致AI一直“卡住”。
- 解决方案:这是客户端实现的问题。首选方案是使用像Cline这样支持配置
timeout参数的客户端,并设置一个合理的值(如30秒)。如果必须使用有问题的客户端,一个变通方法是给你的AI指令加上时间限制:“请在60秒内完成这个测试阶段,无论成功与否,都给我一个进度报告。”
- 解决方案:这是客户端实现的问题。首选方案是使用像Cline这样支持配置
问题:HTTP/2支持的不确定性。虽然工具支持HTTP/2,但AI在构造HTTP/2请求时,可能会包含一些HTTP/2禁止的标头(如
Connection、Upgrade等)。- 解决方案:BurpMCP的
send-http-request工具有一个http2布尔参数,设为true时会尝试过滤禁用的标头。但如果请求仍然失败,你需要检查Server Logs中的原始请求,手动告诉AI移除了哪些非法标头。对于严格的HTTP/2测试,目前更推荐的方式是:你手动在Burp中构造一个正确的HTTP/2请求并保存,然后让AI基于这个模板进行resend-saved-request操作。
- 解决方案:BurpMCP的
5.3 安全与可控性考量
- 不要授予AI过高权限:BurpMCP运行在你的本地Burp Suite中,这意味着AI通过它发送的请求,会携带你的Burp代理设置、会话Cookies等。切勿在不可信的AI模型或第三方托管的服务上使用此配置。确保你连接的AI客户端(如Claude Desktop)是在你本地运行的,且你信任其背后的模型。
- 善用“Server Logs”进行审计:这是你的控制台。定期查看这里的信息,了解AI正在做什么。如果发现AI行为异常(例如,向非目标域名发送大量请求),可以立即在Burp中暂停或禁用扩展。
- 范围控制:结合Burp Suite的“Scope”功能使用。将你的目标域名添加到Scope中,并设置Burp Proxy和Scanner等只在Scope内工作。这样,即使AI误操作,其影响范围也被限制在了目标应用内。
6. 进阶应用场景与未来展望
BurpMCP的潜力远不止于简单的参数模糊测试。结合不同的测试思路,它可以演化出更强大的用法。
场景一:自动化漏洞复现与PoC生成当你阅读一篇新的漏洞报告或CVE详情时,里面通常会包含HTTP请求示例。你可以快速将这些请求保存到BurpMCP,然后命令AI:“分析这些请求,这是针对XXX系统CVE-2023-XXXXX的漏洞复现请求。请在我们的测试环境中,调整主机名、端口和必要的参数,尝试复现这个漏洞。如果成功,请生成一个简明的验证性PoC请求。” AI可以快速完成适配和测试,比你手动复制修改要快得多。
场景二:辅助代码审计与逻辑梳理对于白盒测试,你可以将Burp中拦截到的API请求与源代码片段一起提供给AI。例如,保存一个“密码重置”请求,同时将对应的后端控制器代码粘贴到聊天窗。然后指示AI:“这是前端发起的密码重置请求,这是处理它的后端Java代码。请分析代码逻辑,找出可能的漏洞,如条件竞争、状态覆盖等,并设计BurpMCP请求来验证你的猜想。”
场景三:构建自定义工作流你可以将BurpMCP视为一个可编程的测试引擎。通过精心设计的提示词,你可以让AI执行一套固定的测试流程。例如:“第一阶段:信息收集。获取所有保存的请求,识别所有唯一的API端点、参数和使用的HTTP方法。第二阶段:输入点枚举。对每个请求的每个参数,尝试注入一个基础Payload(如{{7*7}})以识别模板注入点;尝试修改Content-Type头以测试解析差异。第三阶段:深度测试。对上一阶段发现的所有可疑点,进行专项测试……” 这相当于为你创建了一个智能的、可自然语言定制的自动化测试脚本。
未来可能的演进方向:目前的工具集是基础但强大的。社区可以在此基础上开发更专业的工具,例如:一个专门用于测试GraphQL接口的工具,能理解Introspection查询并自动构造复杂查询;一个用于测试JWT的工具,能自动识别JWT、尝试弱密钥破解或构造无效签名;甚至是一个与Burp Scanner深度集成的工具,让AI能够解读Scanner的审计日志,并针对中危漏洞点进行手动深化验证。
我个人在实际使用BurpMCP几个月后,最大的体会是它改变了我的测试节奏。以前,我需要频繁地在浏览器、Burp、笔记和思维导图之间切换。现在,Burp成了我的指挥中心,AI成了不知疲倦的一线侦察兵。我可以花更多时间思考攻击面建模和漏洞链构建,而把海量的请求构造和基础验证工作交给AI去执行和记录。它并没有让测试自动化到“一键出洞”的程度——那既不现实也不安全——但它确实将我从大量重复劳动中解放了出来,让我能更专注于安全测试中真正需要人类智慧和经验的部分。对于任何严肃的渗透测试者和漏洞猎人来说,花点时间配置并掌握BurpMCP,无疑是一项能显著提升效率和深度的投资。
