三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

SSRF DNS重绑定绕过法

SSRF DNS重绑定绕过法

DNS 重绑定

(1)基本概念
DNS 重绑定(DNS Rebinding)是一种利用 DNS 解析机制的缺陷,绕过浏览器 “同源策略” 或服务器 “IP 过滤”,实现对目标主机(如客户端本地、服务器内网)访问的攻击技术。其核心是通过控制 DNS 服务器,让同一域名在短时间内解析到不同的 IP 地址。

(2)DNS重绑定绕过
常规 SSRF 防御中,服务器会过滤127.0.0.1、内网 IP 等敏感地址,但攻击者可通过 DNS 重绑定绕过该限制:

攻击者构造恶意域名(如rebind.example.com),让其先解析为 “允许访问的公网 IP”(通过服务器的 IP 过滤);
服务器发起请求时,DNS 将该域名重新解析为 “敏感 IP”(如127.0.0.1或192.168.1.100);
服务器最终访问敏感 IP,实现 SSRF 攻击,此时常规的 “IP 过滤” 防御失效(因服务器校验的是第一次解析的 IP)
(3)工作原理
攻击者完全控制一个域名(例如 evil.com)的 DNS 服务器。他可以进行如下配置:

设置极短的 TTL (Time-To-Live):例如 0 秒或几秒,告诉解析器不要缓存记录,每次都重新查询。

配置两条 A 记录:

第一次查询:返回一个合法的、受攻击者控制的公网 IP(例如 1.2.3.4)。这一步是为了通过应用程序的“白名单/黑名单”校验。

第二次查询:返回一个目标内网 IP(例如 192.168.1.1)。这一步是真正的攻击

绕过安全限制:
对浏览器:利用 “同源策略” 仅校验域名不校验 IP 的特性,让脚本先通过公网 IP 加载,再通过 DNS 切换解析到目标 IP,实现对本地 / 内网服务的访问;
对服务器:若服务器仅校验 “域名是否合法” 或 “首次解析的 IP”,则切换后的目标 IP 会被服务器默认访问,绕过 IP 过滤。

实战:

(1)网页工具:(1)配置DNS重绑定

打开 rebinder.html 页面,访问如下网址,配置DNS重绑定。

https://lock.cmpxchg8b.com/rebinder.html

如上所示A对应的IP地址就是要绕过的IP地址,本关卡需要写为127.0.0.1,对于B的ip地址,随即填一个的IP地址即可,这里使用默认的192.168.0.1。通过修该域名对应的IP,使一个域名对应两个IP,那么在多次的访问之下产生的访问效果是一样的实现IP绕过。

(2)生成域名如下:

7f000001.c0a80001.rbndr.us

(3)尝试命令行ping这个域名7f000001.c0a80001.rbndr.us,如下所示,符合DNS重绑定的需求,在两个ip地址192.168.0.1和127.0.0.1之间切换。

(4)利用DNS重绑定获取flag

使用生成的域名构造Payload:/?url=7f000001.c0a80001.rbndr.us/flag.php
注意:这里不用/?url=http://,直接写就行了

注:里推荐使用burpsuite的intruder模块,来批量发送请求,以利用时间差完成ssrf

图片

← 返回列表