### 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. **攻击成功：** 此时，恶意脚本已经成功绕过同源策略，可以直接访问和控制内网中的设备，如路由器、摄像头或打印机