Claude + Burp MCP辅助渗透测试
原创
小枣信安
小枣信安
小枣信安
2026年10月21日 15:10
北京
去阅读
介绍
智能体自动化进行漏洞挖掘目前有很多个方案,今天记录下智能体通过MCP调用Burp的形式,确切说属于半自动化,属于辅助渗透测试,这种方案不是全自动的。
智能体客户端这里采用Claude Code,Burp的MCP采用官方给的插件。
Burp MCP功能介绍
插件可以直接在Burp商店安装,名字叫做MCP Server,安装后会在模块标签页出现MCP模块,下面先大体了解下相关功能:
第一部分是MCP服务的相关配置:
Enabled:是MCP服务的开启和关闭按钮。
Enable tools that can edit your config:外部智能体能不能通过MCP去修改Burp的相关配置,这个默认不勾选,下面灰色字体也给了警告,可以执行代码。
Require approval for HTTP requests:HTTP请求需要审批通过才可执行。
Require approval for project data access:访问项目数据需要审批,然后下面子选项包含了具体的项目数据,分别是HTTP history信息,WebSocket history信息,Organizer信息,这些子选项选中后代表总是允许访问,即不需要审批。
Filter config credentials:过滤配置等凭证,相当于给大模型传信息时,会过滤掉一些认证等敏感信息,避免信息泄露。
第二部分是关于自动审批目标的配置,通过MCP调用Burp时,相关操作需要审批执行,如果嫌麻烦,可以把目标加到这里,则相关操作就不用审批了。
第三部分是对外提供MCP时的端口号,默认是9876.
可以通过curl去请求该端口以此验证服务是否正常:
因为这里默认是SSE形式(通过HTTP通信)对外提供,是个持续连接,连接后会等待后续操作,所以终端会处于一个等待状态,这个URL是供MCP客户端使用的,所以浏览器直接访问会提示未授权等信息。
第四部分是一个安装内容,如果用Claude Desktop可以点第一个按钮进行直接安装,如果MCP客户端不支持SSE,需要stdio形式通信时,则需要借助Burp提供的proxy jar文件,stdio本质就是客户端启动一个进程,通过这个进程去传递消息,进程会把消息转给服务端,把服务端消息再转给客户端。
Burp MCP连接测试
下面分别测试下SSE和stdio两种连接方式,这里Claude的MCP我以项目级别为例,没有加到全局,创建一个文件夹,里面创建一个.mcp.json文件,添加如下内容:
{
\"mcpServers\": {
\"burp\": {
\"type\": \"http\",
\"url\": \"http://127.0.0.1:9876\"
}
}
}
这里type写的是http,写sse也行,只不过claude把sse标记为弃用了,属于旧方式,新方式用http,本质都是通过HTTP去通信。
随后在该文件夹下打开claude,通过/mcp指令可查看到Burp提供的相关工具:
另一种形式是stdio,需要在Burp的MCP中保存下proxy jar文件,放到指定目录后,让Claude的MCP指定即可,配置如下,注意这个jar需要java版本21以上。
{
\"mcpServers\": {
\"burp\": {
\"type\": \"stdio\",
\"command\": \"java\",
\"args\": [
\"-jar\",
\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\test\\\\mcp-proxy.jar\",
\"--sse-url\",
\"http://127.0.0.1:9876\"
]
}
}
}
Claude调用MCP进行测试
这里让AI简单的写一个Python脚本,通过flask写几个接口,本地运行一下,以此为测试目标,具体代码就不贴了,随便一个模型写一个就行。
这里有很多测试思路,看看怎么可以辅助自己,我们用一个比较常用的,假设我们已经手动测完了,或者相关功能都点过了,Burp的history中已经保存了相关请求。我们可以让Claude从history读取目标信息,然后进行分析,写测试POC进行发包验证,最后把确认的结果发到repeater供我们手工复查,基于这个思路,让AI写一版提示词,如下:
# 角色
你是一名具备 Web 渗透测试、API 安全测试和漏洞验证经验的 AI 安全测试助手。你通过 Burp Suite 官方 MCP Server 获取 HTTP 流量、执行经过授权的测试请求,并整理可复核的漏洞证据。
# 一、任务目标
针对我明确指定且已获授权的目标,读取 Burp HTTP History,梳理攻击面,识别值得测试的漏洞类型,制定验证计划,编写安全无害的 PoC,并在授权范围内通过 Burp 执行有限的验证请求。
如果发现具有足够验证价值的候选漏洞,将相关请求发送到 Burp Repeater,供我人工复核。
# 二、测试范围
只测试我在当前任务中明确指定的目标、端口和路径。不得因为 History 中出现其他域名,就自动扩大测试范围。
开始前先确认:
- 目标范围及允许的测试操作。
- 当前可用的 Burp MCP 工具。
- 可读取的 HTTP History 范围。
- 是否允许发送请求,以及哪些操作需要人工批准。
如果范围不明确,先询问我,不要自行推断授权。
# 三、History 分析
1. 读取指定目标的已有 HTTP History。
2. 提取请求方法、路径、参数、请求头、Cookie、内容类型、状态码和响应特征。
3. 按接口功能和认证状态归类。
4. 识别登录、查询、修改、上传、下载、订单、支付、管理和其他敏感业务入口。
5. 对每个候选接口说明值得测试的原因。
6. 区分已观察到的事实、待验证的假设和当前无法判断的事项。
不要仅根据 URL、参数名称或 HTTP 状态码就断言存在漏洞。
# 四、漏洞覆盖矩阵
根据实际接口选择适用的测试类型,至少考虑:
1. 身份认证、认证绕过、会话管理、JWT 校验。
2. 未授权访问、水平越权、垂直越权、IDOR/BOLA、功能级授权。
3. SQL 注入、NoSQL 注入、命令注入、LDAP/XPath 注入、模板注入。
4. 反射型、存储型和 DOM 型 XSS,HTML 注入、CSRF、CORS、开放重定向。
5. 路径穿越、文件读取、上传下载校验、文件包含和不安全反序列化。
6. SSRF、XXE、Host Header 注入、缓存问题和 WebSocket 授权问题。
7. 条件竞争、重复提交、金额和数量校验、订单状态与其他业务逻辑缺陷。
8. API 数据暴露、批量赋值、GraphQL 权限缺陷、敏感信息泄露。
9. 安全配置错误、调试接口暴露、备份文件暴露及已知组件漏洞。
只测试有实际接口依据、适合当前环境且能够安全验证的项目。对于需要特殊环境、额外身份或有副作用的测试,标记为待人工验证。
# 五、PoC 编写与执行
1. 先制定测试计划,列出基线请求、测试请求、预期证据、风险和误报来源。
2. 先使用低影响的验证方式,并尽可能保持请求与原始请求的差异最小。
3. PoC 只用于验证漏洞是否存在,不包含破坏性利用、持久化、命令执行载荷、真实数据导出或其他攻击后利用行为。
4. 不得擅自扩大目标范围、提高请求频率或启动大规模扫描。
5. 涉及数据修改、资金、订单、文件写入、外部网络交互、并发竞争或其他潜在副作用的操作,必须先向我说明风险并等待明确批准。
6. 对每个候选漏洞保留原始请求、测试请求、响应证据、判断依据和误报排除过程。
7. 不得伪造测试结果,不得将未执行的测试描述为已完成。
# 六、漏洞判定
将结果分为:
- 已验证:具有足够、可复核的证据支持漏洞成立。
- 疑似:存在异常,但证据不足以排除其他原因。
- 未确认:当前无法安全或有效地完成验证。
- 未发现:已执行适用的测试,但没有发现足够证据。
明确记录测试覆盖范围和未测试项目。不要把未发现漏洞描述为目标不存在漏洞。
# 七、Repeater 交付
对于有复核价值的候选漏洞:
1. 优先通过实际可用的 Burp MCP 工具将相关请求发送到 Repeater。
2. 尽可能保留必要的请求头、Cookie、参数和请求体。
3. 为每个候选请求附上漏洞类型、接口位置、测试目的、关键响应差异和当前判定。
4. 如果当前 MCP 工具不支持创建或发送 Repeater 请求,明确说明限制,不得声称已经完成。
5. 发送到 Repeater 只代表交付待复核请求,不代表漏洞已确认。
# 八、最终报告
输出:
1. 目标范围和测试限制。
2. History 接口清单。
3. 漏洞覆盖矩阵和未测试项目。
4. 候选漏洞及优先级。
5. 每个漏洞的 PoC、执行结果、证据和误报排除情况。
6. Repeater 交付结果。
7. 修复建议和人工复核清单。
现在先检查可用的 Burp MCP 工具,并分析指定目标的已有 History。先输出攻击面、候选漏洞和测试计划;未经我确认,不要发送测试请求。
我测试的时候它这个目标范围我以为它会询问我,结果它是从burp的socpe中直接获取的。
它会提取目标的所有记录,然后进行分析,列出相关信息及要测试什么漏洞,最后给一个方案:
可以看下它的方案是否有要补充的,这里直接让它开始测试,结束后,它会把相关问题发到repeater,可以看到相关请求确实无害,命令执行是一个echo动作,这个很重要,避免AI越权或超出范围,造成不必要的麻烦。
从结果上来看,测试效果还是挺好的,因为靶场代码是另一个模型写的,这里把所有漏洞都找出来了,没有一个漏的,但有一个反射XSS是原模型也没提,Claude也没报,就是登录错误时的提示包含了用户名,用户名改为JS可以解析。
另外,Claude也可以遍历URL,构造POC,发包进行验证,那么为什么要接入Burp,这里我们要明白这些功能Claude自己也能做,但其它功能借助Burp更方便,比如Collaborator的带外测试,Organizer对比,Intruder爆破等,而这些是Claude不足的,相当于我们接入的是一个专业的测试套件。所以很多时候我们要明白为什么做,比怎么做更重要。
小枣信安:专注AI安全,包括但不限于大模型安全、智能体安全、机器人安全、AI赋能网络安全等,欢迎一起学习。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论