当模型协议成为攻击入口:一款给你的Burp套件装上MCP利刃的插件

admin 2026-04-30 04:56:34 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档揭示了ModelContextProtocol(MCP)服务器作为新兴攻击面的安全风险,并介绍了Fenrisk团队开发的BurpSuite插件MCPwned。该插件能自动识别MCP服务器、枚举其工具能力,并预填充渗透测试载荷,通过四步流程(被动识别、主动探测、能力审计、漏洞利用)提升测试效率。文章以实际漏洞案例说明MCP安全现状,同时指出插件当前局限(如SSE支持不足)并规划了未来功能扩展。 综合评分: 85 文章分类: 渗透测试,WEB安全,安全工具,漏洞分析,红队


cover_image

当模型协议成为攻击入口:一款给你的Burp套件装上MCP利刃的插件

幻泉之洲

2026年4月29日 09:46 北京

在小说阅读器读本章

去阅读

Model Context Protocol (MCP)服务器正在快速成为新的攻击面,但主流安全测试工具却缺乏支持。Fenrisk安全团队为此开发了Burp Suite插件MCPwned,它能自动识别、枚举MCP服务器能力,并预填充渗透测试载荷,为安全审计提供了第一把趁手的工具。

一片正在疯狂扩张的安全荒野

最近几周,安全社区连续爆出几个跟MCP相关的严重漏洞。一个是Nginx UI的验证缺失,直接让攻击者能执行特权操作。另一个是在AWS的MCP服务器里发现的命令注入。更震撼的是上周Ox Security披露的那个远程代码执行漏洞,直接引发了十来个CVE。

这些新闻不是孤立的,它们共同指向一个事实:MCP服务器这个攻击面,正在以惊人的速度增长。

在Shodan上用”MCP”搜一下,结果近10万条。这10万里有些是知名大厂,有些是AI初创公司,还有些是个人搭建的。说白了,从市值万亿的巨头到自家地下室捣鼓的程序员,大家一股脑儿地把MCP服务器部署到了公网上。

为什么问题这么多?一个新生态在“快跑猛冲”阶段的通病。很多MCP服务器的部署根本顾不上基本的安全原则,什么凭证保护、供应链安全、最小权限原则,统统抛在脑后。

开发者常有一个误区:觉得MCP是给AI调用的接口,不是给人直接访问的(虽然技术上完全可以),所以暴露风险低。这种想法很危险,它会直接导致输入校验不严,或者根本不做鉴权。

这块安全荒地,太缺趁手的开荒工具了。

这就是我们为什么要开发MCPwned。

MCP到底是什么?

简单说,MCP是让AI客户端(Agent)从服务器获取能力的协议。这些“能力”可以是工具、资源,或者一些上下文提示。

举个例子,一个设计软件可以通过MCP暴露一些接口,让你的本地AI助手能直接在这个软件里帮你修改文件。

关键在于它的灵活性。只要一个服务用MCP协议暴露了能力,它就能成为MCP服务器。传输方式有两种:同一个机器上用本地STDIO,远程服务器就用HTTP流。

它底层用JSON-RPC传递消息,有会话ID和递增的消息ID。最开始时,协议本身没有内置任何授权机制,当然,后来可以加上。但这种默认状态,加上“不是给人用”的错觉,就埋下了不少隐患。

看个例子,下面这段代码用FastMCP库启动了一个MCP服务器:

from fastmcp import FastMCP import subprocess

mcp = FastMCP(“Minas Tirith Battle Supplies”)

@mcp.tool() def light_beacon(beacon_name: str) -> str:     try:         output = subprocess.check_output(f”ping -c 1 {beacon_name}”, shell=True, text=True)     except Exception as e:         raise Exception(f”Beacon tower ‘{beacon_name}’ is unreachable. The signal cannot be lit.”)     return f”The beacon of {beacon_name} is lit! Gondor calls for aid.\n\n{output}”

mcp.run(transport=”streamable-http”, host=”0.0.0.0″, port=8000)

这个叫“米那斯提力斯战备物资”的服务器只提供了一个工具:light_beacon。它用subprocess去ping一个信标名,然后返回结果。

注意看,shell=True。这个工具是故意留了命令注入漏洞的,我们稍后就在Repeater里利用它。

如果一个客户端想调用这个工具,它会发一个类似下面的请求:

POST /mcp HTTP/1.1 … Content-Type: application/json Accept: text/event-stream, application/json Mcp-Session-Id: 4ee9dfeccb8148fbb0f4d6fabb220600

{   “jsonrpc”: “2.0”,   “id”: 1,   “method”: “tools/call”,   “params”: {     “name”: “light_beacon”,     “arguments”: {       “beacon_name”: “…”     }   } }

服务器会以SSE(Server-Sent Events)流返回结果。这就是MCP交互的基本样子。

MCPwned:给Burp的渗透测试工具箱

目前的Burp Suite BApp商店里,还没有一个能够清晰、高效地列出MCP服务器所有能力并进行测试的扩展。我们渗透测试时遇到的MCP服务器越来越多,必须得有个专门的工具了。

MCPwned是我们给出的第一个答案。

它的工作流程是这样的:

第一步:被动识别。插件在后台监控经过Burp的请求,只要看起来像是MCP流量,就用灰色高亮标记出来。

第二步:主动探测。你可以把标记的请求发送到扩展标签页(Ctrl + MCtrl + Shift + M 快捷键也可以用)。然后,插件会主动连接目标服务器,收集所有信息,包括协议版本、支持的能力列表,并且获取一个可供后续使用的有效会话ID。

第三步:能力枚举与审计。插件把所有发现的能力清晰地展示出来。你可以查看每个工具的详细信息(参数、类型、描述),方便后续测试。它还支持添加笔记、颜色标签,甚至可以导出为Markdown格式,直接用在报告里。

第四步:轻松利用。这是最省事的一步。当你选中一个工具,并把它发送到Repeater标签页时,插件已经帮你把请求模板预填充好了。审计人员只需要替换掉payload占位符就行,比如把上面例子中的 beacon_name参数值从“TODO”换成 x; cat /etc/passwd

瞧,那个看似无害的烽火台工具,就这么被我们利用来读系统密码了。插件还能帮你自动解析服务器返回的、有时会非常臃肿的MCP响应消息,让你看得更清楚。

当前局限与未来构想

MCPwned目前还只是个第一步,有不少限制。

最大的技术挑战来自Burp Suite本身对SSE的原生支持不足。我们尝试用Burp的API发送探测请求时,如果服务器返回SSE流,会直接抛异常。所以,目前部分探测请求是通过官方的MCP Java SDK来完成的,这就导致这部分请求不会经过Burp的Logger。

另外,第一版也不支持基于WebSocket的MCP传输方式,虽然这种只占不到10%,但也不能忽视。

我们计划在未来版本解决这些问题,并增加更多功能:

  • 让探测请求完全走Burp原生通道,并支持WebSocket。
  • 实现按实现库扫描。自动识别服务器用的是fastMCP、Python SDK、Spring Java MCP还是RMCP,并关联已知漏洞库。
  • 集成Burp Suite的主动扫描器,让它能自动发现MCP端点。
  • 支持MCP协议的新特性,比如Tasks。

我们已经把插件提交到了Burp Suite BApp商店。在此之前,你可以手动安装,从我们GitHub仓库的发布页面下载.jar文件就行:MCPwned v1.0.0 (https://github.com/FenriskSecurity/MCPwned/releases/download/v1.0.0/MCPwned.jar)

如果你发现了bug,或者有功能建议,甚至想贡献代码,都欢迎来GitHub上提issue或者PR。

MCP服务器的浪潮已经来了,安全测试不能再用原始的方式刀耕火种。MCPwned是我们扔出的一把开山斧,路还长,我们边走边打磨。


参考资料

[1] https://fenrisk.com/mcpwned-burp-suite-extension-mcp-servers


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:幻泉之洲 《当模型协议成为攻击入口:一款给你的Burp套件装上MCP利刃的插件》

评论:0   参与:  0