DNS重绑定SSRF在Burp Suite MCP服务器中通过send_http1_request工具实现内部网络访问
漏洞概述
Burp Suite MCP(模型上下文协议)服务器在端口9876上缺乏适当的来源验证和CORS保护,使得攻击者能够通过DNS重绑定攻击绕过同源策略。
攻击前提条件
- 攻击者需要诱骗已安装并启用MCP服务器的Burp Suite用户访问恶意链接
- 攻击者需要在控制的域名上托管恶意网页
技术实现步骤
第一步:设置DNS重绑定
- 配置控制域名的DNS服务器,使其首次DNS查询返回攻击者控制的服务器的IP地址(例如192.168.80.154),后续查询返回127.0.0.1
- 可使用https://github.com/mogwailabs/DNSrebinder工具:
|
|
第二步:设置恶意页面服务器
- 在攻击者IP上启动托管恶意网页的Web服务器
- 使用命令:
python3 -m http.server 8080 - 访问:https://lock.cmpxchg8b.com/rebinder.html
- 输入托管恶意网页的Web服务器IP(本地测试可使用私有IP)
- 点击生成重绑定主机名,例如:
7f000001.c0a80103.rbndr.us
服务器设置细节
- 启动Web服务器:
python3 -m http.server 9876(使用与Burp MCP服务器相同的端口) - 本地测试时暂时关闭MCP服务器以避免端口冲突
- DNS重绑定完成后,停止/终止Web服务器
- 启动Burp Suite的MCP服务器,JS代码将尝试与MCP服务器建立连接
附带的index.html包含POC代码。
实际POC流程
当在目标机器上打开类似http://7f000001.c0a80103.rbndr.us/的网页URL时,会加载嵌入的恶意JS脚本,执行以下操作:
- 建立与MCP服务器的连接并获取会话ID,用于后续交互
- 调用MCP服务器的
send_http1_request工具向任何内部/外部主机发起HTTP请求 - 使用
get_proxy_http_history检索HTTP历史记录
这使得远程攻击者不仅能够访问Burp的MCP服务器工具,还能发起SSRF请求访问原本无法访问的公司内部站点。
影响范围
此漏洞允许恶意网站:
- 连接到受害者的本地MCP服务器(127.0.0.1:9876)
- 使用
send_http1_requestMCP工具发起任意HTTP请求 - 访问内部网络、本地主机服务和云元数据端点
- 检索完整的HTTP响应,包括敏感数据
附加影响
同一漏洞还允许远程攻击者获取完整的Burp HTTP历史记录,其中可能包含用户凭据、令牌等敏感信息。
时间线与修复
- 2025年6月3日:漏洞报告提交
- 2025年6月16日:MCP Server v1.1.0发布修复此问题
- 虽然BApps不符合官方赏金资格,但PortSwigger仍奖励了2,000美元奖金
- 漏洞类型:服务器端请求伪造(SSRF)
- 最终严重性评级:无(由于资产类型更改为BApps)