Burp Suite MCP服务器DNS重绑定SSRF漏洞分析:通过send_http1_request工具实现内网渗透

本文详细分析了Burp Suite MCP服务器存在的DNS重绑定SSRF漏洞,攻击者可利用send_http1_request工具绕过同源策略访问内部网络,获取敏感数据。漏洞涉及具体的技术实现步骤和修复方案。

DNS重绑定SSRF在Burp Suite MCP服务器中通过send_http1_request工具实现内部网络访问

漏洞概述

Burp Suite MCP(模型上下文协议)服务器在端口9876上缺乏适当的来源验证和CORS保护,使得攻击者能够通过DNS重绑定攻击绕过同源策略。

攻击前提条件

  • 攻击者需要诱骗已安装并启用MCP服务器的Burp Suite用户访问恶意链接
  • 攻击者需要在控制的域名上托管恶意网页

技术实现步骤

第一步:设置DNS重绑定

  1. 配置控制域名的DNS服务器,使其首次DNS查询返回攻击者控制的服务器的IP地址(例如192.168.80.154),后续查询返回127.0.0.1
  2. 可使用https://github.com/mogwailabs/DNSrebinder工具:
1
python3 dnsrebinder.py --domain rebind.mydomain.eu. --rebind 127.0.0.1 --ip 192.168.1.3 --counter 1 --udp

第二步:设置恶意页面服务器

  1. 在攻击者IP上启动托管恶意网页的Web服务器
  2. 使用命令:python3 -m http.server 8080
  3. 访问:https://lock.cmpxchg8b.com/rebinder.html
  4. 输入托管恶意网页的Web服务器IP(本地测试可使用私有IP)
  5. 点击生成重绑定主机名,例如:7f000001.c0a80103.rbndr.us

服务器设置细节

  1. 启动Web服务器:python3 -m http.server 9876(使用与Burp MCP服务器相同的端口)
  2. 本地测试时暂时关闭MCP服务器以避免端口冲突
  3. DNS重绑定完成后,停止/终止Web服务器
  4. 启动Burp Suite的MCP服务器,JS代码将尝试与MCP服务器建立连接

附带的index.html包含POC代码。

实际POC流程

当在目标机器上打开类似http://7f000001.c0a80103.rbndr.us/的网页URL时,会加载嵌入的恶意JS脚本,执行以下操作:

  1. 建立与MCP服务器的连接并获取会话ID,用于后续交互
  2. 调用MCP服务器的send_http1_request工具向任何内部/外部主机发起HTTP请求
  3. 使用get_proxy_http_history检索HTTP历史记录

这使得远程攻击者不仅能够访问Burp的MCP服务器工具,还能发起SSRF请求访问原本无法访问的公司内部站点。

影响范围

此漏洞允许恶意网站:

  • 连接到受害者的本地MCP服务器(127.0.0.1:9876)
  • 使用send_http1_request MCP工具发起任意HTTP请求
  • 访问内部网络、本地主机服务和云元数据端点
  • 检索完整的HTTP响应,包括敏感数据

附加影响

同一漏洞还允许远程攻击者获取完整的Burp HTTP历史记录,其中可能包含用户凭据、令牌等敏感信息。

时间线与修复

  • 2025年6月3日:漏洞报告提交
  • 2025年6月16日:MCP Server v1.1.0发布修复此问题
  • 虽然BApps不符合官方赏金资格,但PortSwigger仍奖励了2,000美元奖金
  • 漏洞类型:服务器端请求伪造(SSRF)
  • 最终严重性评级:无(由于资产类型更改为BApps)
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计