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

本文来自博客园,作者:Doll_Marker,转载请注明原文链接:https://www.cnblogs.com/dollaikun/p/20627124