SuperAPI AI 工具集

dns-rebinding-attacks

安全与审计

查看项目

更新于 10-16 06:59

技能介绍

本技能是一份 DNS 重绑定(DNS Rebinding)专家级攻击手册,面向安全测试与攻防研究场景,用于测试依赖 DNS 解析做来源校验的应用、需要从浏览器上下文访问内网服务的情形。

核心原理

浏览器同源策略绑定的是协议 + 主机名 + 端口,主机名在建立连接时通过 DNS 解析。若攻击者控制 attacker.com 的 DNS 服务器,即可让首次解析返回攻击者 IP(用于投递恶意 JS),之后解析返回内网 IP,而浏览器仍视两次响应为同源(attacker.com),从而让恶意 JS 读取内网服务响应。关键点在于:同源策略检查的是主机名字符串,而非解析后的 IP。

攻击流程:受害者访问 attacker.com → DNS 返回攻击者 IP,浏览器加载恶意 JS → TTL 过期(或强制清缓存)→ JS 再次请求 attacker.com → DNS 返回内网 IP → 浏览器以 attacker.com 源向内网 IP 发送请求 → JS 读取响应并将数据外带。

TTL 操控与浏览器缓存

攻击者运行权威 DNS 服务器交替返回结果:第 1 次返回攻击者 IP、TTL=0,第 2 次起返回目标内网 IP、TTL=0,以迫使重新解析。但浏览器自带 DNS 缓存会忽略低 TTL:Chrome 约 60 秒下限,Firefox 约 60 秒(network.dnsCacheExpiration,可在 about:config 调整),Safari 缓存时长不定(通常更短),Edge(Chromium)与 Chrome 相同。

绕过策略包括:多 A 记录(单次响应同时返回攻击者 IP 与目标 IP,连接失败时回退到内网 IP);子域泛滥(为每次请求使用唯一子域名,避免缓存命中);Service Worker 延迟请求以待缓存过期。

攻击变体

经典 HTTP 重绑定:目标为内网 Web 服务(管理面板、REST API),等待缓存过期后 fetch 内网接口并外带数据。 WebSocket 重绑定:WebSocket 连接在重绑定后保持,建立 WS 后重绑定即可连接内网服务。 TOCTOU:服务端在请求时校验 DNS 但复用连接,校验时解析为公网 IP 通过检查,随后 DNS 变为内网地址,连接复用或重定向命中内网。 多 A 记录(最快变体):利用连接失败回退机制即时完成重绑定。

高价值目标

包括云元数据(169.254.169.254:80,可获取 AWS/GCP/Azure 凭证)、Docker API(172.17.0.1:2375)、Kubernetes API(10.96.0.1:443/6443)、内网管理面板、IoT 设备、Elasticsearch(9200)、Redis(6379)、Consul/etcd(8500/2379)。针对云元数据,IMDSv2 要求 PUT 请求获取 X-aws-ec2-metadata-token,重绑定在 no-cors 模式下难以设置自定义头,因此有一定防御效果。

工具

提供四类工具:Singularity(完整 DNS 重绑定攻击框架,github.com/nccgroup/singularity)、rbndr.us(零配置快速重绑定 DNS 服务,格式 <hex-ip1>.<hex-ip2>.rbndr.us)、whonow(动态 DNS 重绑定服务器,github.com/taviso/whonow)、dnsrebinder(最小化 Python DNS 服务器)。手册包含 Singularity 的命令行启动示例(go build 与 -DNSRebindStrategy、-ResponseIPAddr、-RebindingFn、-ResponseReboundIPAddr 等参数)以及 rbndr.us 的十六进制 IP 转换示例。

与 SSRF 的区别

DNS 重绑定在客户端(浏览器)执行,绕过同源策略,由攻击者控制 DNS 解析,需受害者访问攻击者页面,借助受害者网络位置的浏览器访问内网,且浏览器 Cookie 会自动携带,协议受限于 HTTP/WS;SSRF 在服务端执行,绕过网络访问控制,由攻击者控制服务端发出的 URL/请求,需服务端存在可被利用的 fetch,访问的是服务器网络位置的内网,不包含用户凭证,支持任意协议(gopher、file 等)。

防御与绕过

常见防御包括 DNS 固定(pinning)、Host 头校验、网络分段、Chrome 的私有网络访问(PNA)预检、内网服务认证。绕过手法包括:多 A 记录迫使回退、每请求独立子域避免缓存、等待缓存过期(Chrome 60 秒)、经 CNAME 链重绑定;Host 头校验可通过目标未校验 Host、默认配置接受 Host: attacker.com、基于 IP 的虚拟主机、通配虚拟主机配置等绕过;PNA 绕过涉及 PNA 仅在 Chrome(截至 2024 年)且执行不完整、WebSocket 可能不触发预检、HTTPS 到 HTTP 降级、非浏览器客户端不受影响。

决策路径与检查清单

手册给出决策树:若能让受害者访问攻击者页面,则可考虑 DNS 重绑定,并根据目标类型选择 HTTP/WS/云元数据变体、按浏览器选择等待或子域策略、检查目标是否校验 Host 头(校验则考虑改用 SSRF)、评估凭证需求;若目标校验 Host 头,则重绑定单独不可行,应转向 SSRF 方向。真实利用检查清单涵盖搭建重绑定基础设施、识别内网服务、确定目标浏览器 DNS 缓存时长、选择变体、先用良性端点验证、确认同源读取、逐步升级(云元数据凭证、Docker API 到 RCE、管理面板配置)、记录攻击配置与数据外带。

适用场景与限制

适用于授权安全测试与红队研究中评估同源策略信任边界、内网服务暴露面与浏览器侧攻击路径。其限制在于:需要受害者访问攻击者页面;受浏览器 DNS 缓存与 PNA 策略影响;目标若严格校验 Host 头则单独重绑定无效;no-cors 模式下无法发送自定义请求头,凭证依赖浏览器自动携带的 Cookie;IMDSv2 等机制可缓解云元数据攻击。本文档未提供官方收费与价格信息,也未提供其他未列明的使用步骤或效果承诺。