基于本文回答

播面 播面

刷题像听歌,多听自然懂
0
评论

什么是 DNS 重绑定攻击 (DNS Rebinding)?

知识点图片

DNS 重绑定攻击 (DNS Rebinding Attack) 是一种利用域名系统 (DNS) 的特性,欺骗浏览器绕过同源策略 (Same-Origin Policy),从而让外部恶意网页能够访问受害者内部网络 (Intranet)本地主机 (Localhost) 服务的攻击技术。

简单来说,就是攻击者把一个互联网域名“重绑定”到了你内网的 IP 地址上,借此把你的浏览器当成代理,去攻击你家里的路由器、智能设备或公司的内部服务器。


1. 核心背景:同源策略 (SOP)

为了理解 DNS 重绑定,首先需要理解浏览器的同源策略

  • 浏览器为了安全,禁止网站 A 的脚本读取网站 B 的数据,除非它们是“同源”的(即:协议、域名、端口都相同)。
  • 漏洞点: 浏览器判断“同源”是看域名,而不是看背后的 IP 地址。DNS 重绑定正是利用了这一点,让同一个域名在短时间内指向两个不同的 IP 地址。

2. 攻击流程详解

假设攻击者拥有域名 evil.com,受害者在内网,内网有一台敏感服务器(如路由器后台)IP 为 192.168.1.1

第一步:诱导访问
受害者误点了攻击者的链接(例如钓鱼邮件或恶意广告),浏览器开始访问 http://evil.com

第二步:第一次 DNS 解析 (TTL 极短)
浏览器向 DNS 服务器查询 evil.com 的 IP。

  • 攻击者的 DNS 服务器返回攻击者的真实服务器 IP(例如 1.2.3.4)。
  • 关键点: 攻击者将 DNS 响应的 TTL (Time-To-Live, 生存时间) 设置得非常短(例如 0 秒或 1 秒),告诉浏览器:“这个 IP 马上就过期,下次请重新查。”

第三步:加载恶意脚本
浏览器连接到 1.2.3.4,下载并执行攻击者编写的恶意 JavaScript 代码。

第四步:等待与重连
恶意脚本在浏览器中运行,它使用 XMLHttpRequestfetch 再次向 http://evil.com 发起请求(例如请求 /admin 路径)。

第五步:第二次 DNS 解析 (重绑定)
由于之前的 DNS 缓存已过期(因为 TTL 很短),浏览器必须再次查询 evil.com 的 IP。

  • 这一次,攻击者的 DNS 服务器返回的是受害者的内网 IP(例如 192.168.1.1127.0.0.1)。

第六步:绕过同源策略并窃取数据

  • 浏览器收到新 IP 192.168.1.1
  • 浏览器检查同源策略:请求的域名依然是 evil.com,当前的页面也是 evil.com符合同源策略!
  • 于是,浏览器将请求发送到了内网的 192.168.1.1
  • 恶意脚本读取到了内网设备的响应数据,并将其发送回攻击者的服务器。

3. 攻击危害

DNS 重绑定攻击非常危险,因为它能穿透防火墙和 NAT(网络地址转换)。攻击者可以利用它:

  1. 攻击家用路由器: 篡改 DNS 设置、获取 Wi-Fi 密码。
  2. 攻击 IoT 设备: 控制智能恒温器、摄像头(很多智能设备在内网没有密码或使用默认密码)。
  3. 攻击开发者环境: 访问运行在 localhost (127.0.0.1) 上的 Redis、Memcached 或调试接口,直接执行代码。
  4. 窃取企业内网数据: 访问公司内部 Wiki、代码库或未设防的内部 API。

4. 如何防御?

防御 DNS 重绑定需要多层面的配合:

A. 开发者/服务端防御 (最有效)

如果你开发的 Web 服务可能在内网运行,必须验证 Host Header

  • 检查 Host 头: 服务器收到请求时,检查 HTTP 请求头中的 Host 字段。如果服务运行在 192.168.1.1,但 Host 头是 evil.com,则直接拒绝请求。
  • 使用 HTTPS: 攻击者无法为 evil.com 签发针对你内网 IP 的有效 SSL 证书。如果内网服务强制 HTTPS,握手会失败。
  • 添加身份验证: 即使是内网服务,也不要裸奔,加上密码或 Token 验证。

B. 网络管理员/路由器防御

  • DNS 过滤 (DNS Rebinding Protection): 配置企业或家用路由器的 DNS 解析器(如 dnsmasq),禁止公网域名解析到私有 IP 地址段(如 192.168.x.x, 10.x.x.x, 127.0.0.1)。OpenDNS 和一些现代路由器默认开启此功能。

C. 浏览器防御

  • 现代浏览器尝试通过限制 DNS 解析频率或对极短 TTL 的处理来缓解此问题,但通常不能完全杜绝(因为这是 DNS 协议的标准行为)。
  • DNS Pinning: 浏览器强制将第一次解析的 IP 锁定一段时间,忽略 TTL。但这可能会导致合法的动态 DNS 服务失效。

总结

DNS 重绑定是一种“指鹿为马”的攻击:利用浏览器对域名的盲目信任,在背后偷偷替换 IP 地址,从而让外网脚本把手伸进你的内网口袋里。

00:00
00:00