Files
Sec-Interview/Chapter7/7-31.md
T
2025-09-25 03:32:26 +08:00

23 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 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`)和一个非常短的 **TTLTime-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. **攻击成功:** 此时,恶意脚本已经成功绕过同源策略,可以直接访问和控制内网中的设备,如路由器、摄像头或打印机