文章总结: 文档介绍利用TOCTOU机制的DNS重绑定攻击,通过设置极短TTL,使目标在检查时获外网IP通过验证,连接时解析至内网IP,从而绕过SSRF防御。该手法仅适用于解析与连接分离的场景,对默认永久缓存DNS的Java环境无效。文中提供了rbndr.us工具及域名构造Payload的具体方法,便于实战应用。 综合评分: 88 文章分类: 渗透测试,漏洞分析,红队,内网渗透,WEB安全
TOCTOU 与信任链断裂:DNS Rebinding
原创
Pwn1 Pwn1
漏洞集萃
2026年1月20日 21:49 山东
免责声明 本公众号所发布的文章内容仅供学习与交流使用,禁止用于任何非法用途。
介绍一个很早之前就出现了的 Tips,最近在项目上遇到了,于是简单整理一下,分享给各位大佬。
DNS Rebinding 攻击的本质是利用 TOCTOU (Time of Check, Time of Use)。
它主要是利用了应用在 “检查” 与 “连接” 两个步骤之间存在的微小时间差,并且配合 DNS 协议中的 TTL (Time To Live) 机制,欺骗服务器。
这里我们假设已经发现了 SSRF 漏洞 并且目标存在 WAF,不限制访问内网,于是尝试突破。
正常流程
在没有攻击的情况下,服务端防御 SSRF 的逻辑通常如下:
- 解析:目标接收用户提供的 URL (如
http://example.com),进行 DNS 解析,获取 IP1.2.3.4。 - 验证:目标判断
1.2.3.4是否属于内网黑名单 (如127.0.0.1,192.168.x.x)。如果是外网 IP,则放行。 - 连接:目标使用 HTTP 客户端向
example.com发起请求。
DNS Rebinding 的攻击逻辑
攻击者通过控制 DNS 服务器,打破了我们上述流程的信任假设:
- 设置陷阱:攻击者配置恶意一个 DNS 服务器,然后使得域名
exp.attacker.com拥有两个 A 记录:一个合法的公网 IP (IP_A) 和另外的一个目标内网 IP (IP_B)。
关键在于设置 TTL 为 0 秒(注意⚠️)。
- 第一次解析:目标服务器为了验证安全性,查询
exp.attacker.com。攻击者的 DNS 返回公网IP_A。防火墙检查通过。- 缓存失效:由于
TTL=0,操作系统或应用层的 DNS 缓存立即失效。- 第二次解析:目标服务器准备发起 HTTP 连接。由于缓存失效,它被迫再次发起 DNS 查询。这次,攻击者的 DNS 返回内网
IP_B。- 建立连接:目标服务器误以为还是在访问合法的域名,实际上已经建立起了通往内部网络 (如
127.0.0.1) 的 TCP 连接。
这种手法在处理一些限制内网访问的场景下是有奇效的。
局限性
但是,这种手法也很有限制。
它主要是针对于 “Resolve-Check-Connect” 模式。比如很多开发语言的标准库 or 一些第三方组件(比如 Python 的 requests 结合自定义检查逻辑、以及 PHP 的 curl)在实现的时候,如果逻辑上把 “检查 IP” 和 “发起请求” 分成了两步来操作,并且没有固定第一次解析的 IP,那么就会导致漏洞的存在。
但是
如果是类似于 Java JVM 这种默认安全策略 (networkaddress.cache.ttl) 通常被设置为 -1 (永久缓存) 的话。这就意味着只要第一次解析成功了,那么 JVM 就会一直使用那个公网 IP,不会再次查询 DNS,导致重绑定失败。
除非管理员手动修改配置或代码显式禁用了缓存。
一些工具
1. rbndr.us
rbndr.us 是一个广泛使用的公共 DNS 重绑定服务,它不需要攻击者自建 DNS,只需构造特定格式的域名。
-
IP 编码:该服务要求将 IP 地址转换为 16 进制格式,以避免直接在 URL 中暴露敏感 IP 特征。
-
公网 IP (用于绕过):
1.2.3.4-> Hex:01020304 -
内网 IP (用于攻击):
127.0.0.1-> Hex:7f000001 -
域名构造:格式为
<IP_A_Hex>.<IP_B_Hex>.rbndr.us。 -
Payload:
http://7f000001.01020304.rbndr.us
- 解析逻辑:该域名的 DNS 服务器被配置为随机或轮询返回这两个 IP,且
TTL极短。
2. 其他类似工具
也可以直接搜索下,如:
https://lock.cmpxchg8b.com/rebinder.html
参考
https://gitlab.com/gitlab-org/gitlab/-/issues/353018
https://www.freebuf.com/articles/network/355788.html
https://lock.cmpxchg8b.com/rebinder.html
https://infosecwriteups.com/the-12-500-dns-trick-that-hacked-snapchats-cloud-servers-0cb299ec1d37
https://project-zero.issues.chromium.org/issues/42450491
觉得本文内容对您有启发或帮助? 点个关注➕,获取更多深度分析与前沿资讯!
👉 往期精选
攻防演练中的“降维打击”:逃逸出内网边界的影子资产与SaaS供应链挖掘
【深度复盘】Trust Wallet 惊魂24小时:当官方插件变成“内鬼”,一行代码如何盗走600万美元?
【漏洞挖掘Tips】一种新的 GraphQL 绕过角度
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:漏洞集萃 Pwn1 Pwn1《TOCTOU 与信任链断裂:DNS Rebinding》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论