### DNS 重绑定漏洞原理

1. 攻击原理：两次 DNS 解析的“重绑定”

DNS 重绑定攻击的核心在于“两次”和“重绑定”这两个关键步骤

第一步：第一次 DNS 解析（公网地址）

1. 攻击者准备： 攻击者控制一个恶意域名，例如 `rebind.attacker.com`，并在其 DNS 服务器上配置该域名
2. 用户访问： 用户在浏览器中访问一个恶意网站，该网站包含一个加载 `rebind.attacker.com` 资源的脚本
3. DNS 解析： 浏览器向 DNS 服务器请求解析 `rebind.attacker.com`
4. 恶意响应： 攻击者的 DNS 服务器返回一个正常的公网 IP 地址（例如 `1.1.1.1`）和一个非常短的 TTL（Time-to-Live）值，比如 10 秒
   - TTL 是 DNS 记录的有效期，它告诉浏览器在 TTL 时间内可以缓存这个解析结果。很短的 TTL 值是攻击成功的关键
5. 建立信任： 浏览器接收到公网 IP 后，与 `rebind.attacker.com`建立连接，加载恶意脚本。此时，浏览器认为该脚本是安全的，因为它来自一个公网域名

第二步：第二次DNS解析（内网地址）

1. TTL 过期： 恶意脚本被加载后，会等待一个比 TTL 值稍长的时间（例如 12 秒）
2. 发起请求： 脚本向同一个域名 `rebind.attacker.com` 发起一个新的请求（例如，一个 AJAX 请求）
3. 重新解析： 由于第一次的 DNS 记录已经过期（TTL 超时），浏览器会再次向 DNS 服务器请求解析`rebind.attacker.com`
4. 重绑定： 这一次，攻击者的 DNS 服务器不再返回公网 IP，而是返回一个内网 IP 地址（例如 `192.168.1.1`）
5. 绕过策略： 浏览器接收到这个内网 IP 后，由于它认为这个新的请求仍然来自“同源”的 `rebind.attacker.com`，而其解析结果却是内网 IP，浏览器会认为该请求是合法的，并将其发送到内网地址`192.168.1.1`
6. 攻击成功： 此时，恶意脚本已经成功绕过同源策略，可以直接访问和控制内网中的设备，如路由器、摄像头或打印机