DNS 重绑定漏洞原理
1. 攻击原理:两次 DNS 解析的“重绑定”
DNS 重绑定攻击的核心在于“两次”和“重绑定”这两个关键步骤
第一步:第一次 DNS 解析(公网地址)
- 攻击者准备: 攻击者控制一个恶意域名,例如
rebind.attacker.com
,并在其 DNS 服务器上配置该域名 - 用户访问: 用户在浏览器中访问一个恶意网站,该网站包含一个加载
rebind.attacker.com
资源的脚本 - DNS 解析: 浏览器向 DNS 服务器请求解析
rebind.attacker.com
- 恶意响应: 攻击者的 DNS 服务器返回一个正常的公网 IP 地址(例如
1.1.1.1
)和一个非常短的 TTL(Time-to-Live)值,比如 10 秒- TTL 是 DNS 记录的有效期,它告诉浏览器在 TTL 时间内可以缓存这个解析结果。很短的 TTL 值是攻击成功的关键
- 建立信任: 浏览器接收到公网 IP 后,与
rebind.attacker.com
建立连接,加载恶意脚本。此时,浏览器认为该脚本是安全的,因为它来自一个公网域名
第二步:第二次DNS解析(内网地址)
- TTL 过期: 恶意脚本被加载后,会等待一个比 TTL 值稍长的时间(例如 12 秒)
- 发起请求: 脚本向同一个域名
rebind.attacker.com
发起一个新的请求(例如,一个 AJAX 请求) - 重新解析: 由于第一次的 DNS 记录已经过期(TTL 超时),浏览器会再次向 DNS 服务器请求解析
rebind.attacker.com
- 重绑定: 这一次,攻击者的 DNS 服务器不再返回公网 IP,而是返回一个内网 IP 地址(例如
192.168.1.1
) - 绕过策略: 浏览器接收到这个内网 IP 后,由于它认为这个新的请求仍然来自“同源”的
rebind.attacker.com
,而其解析结果却是内网 IP,浏览器会认为该请求是合法的,并将其发送到内网地址192.168.1.1
- 攻击成功: 此时,恶意脚本已经成功绕过同源策略,可以直接访问和控制内网中的设备,如路由器、摄像头或打印机