ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PayloadsAllTheThings 之 DNS Rebinding 攻击:原理、方法论与防护绕过实战指南

PayloadsAllTheThings 之 DNS Rebinding 攻击:原理、方法论与防护绕过实战指南 网络安全应用安全渗透测试【免费下载链接】PayloadsAllTheThingsA list of useful payloads and bypass for Web Application Security and Pentest/CTF项目地址https://gitcode.com/GitHub_Trending/pa/PayloadsAllTheThings点击查看免费下载本文以 DNS Rebinding/README.md 为核心骨架系统梳理 DNS Rebinding 攻击的完整原理与攻击流程、NCC Group Singularity 框架的使用方法、以及针对常见 DNS 防护措施的三种绕过手法0.0.0.0 / CNAME / localhost并结合本仓库 Server Side Request Forgery 与 Headless Browser 章节中的实际案例给出可直接落地的验证命令与扩展攻击面。读完本文你将能够理解浏览器同源策略在 DNS 层面被突破的底层机制、按步骤搭建并执行一次完整的 DNS Rebinding 攻击、以及在有 DNS 防护如 RFC 1918 私网段过滤的环境中继续突破。什么是 DNS RebindingDNS RebindingDNS 重绑定攻击的核心是攻击者控制的域名其 DNS 解析结果在短时间内从看似合法的公网 IP切换为目标应用的内网/本机 IP从而绕过浏览器的同源策略Same-Origin Policy让受害者的浏览器能够向目标内网应用发起任意请求并读取其响应内容。同源策略规定只有当协议、域名、端口三者完全一致时页面中的脚本才能读写另一个源的资源。浏览器在判断源时依据的是域名而非其背后的 IP。攻击者正是利用这一点——先让malicious.com解析到公网 IP 加载恶意页面此时浏览器认为源是malicious.com随后将该域名重新解析到内网 IP如192.168.1.1浏览器再次请求malicious.com时实际连接的是内网目标但由于 URL 仍是malicious.com同源策略依然放行恶意脚本可以自由读取内网服务的响应。攻击方法论五阶段完整流程原文档将一次 DNS Rebinding 攻击拆解为五个阶段下面逐阶段展开并结合本仓库内容补充可验证细节。1. 搭建阶段Setup Phase注册一个恶意域名例如malicious.com配置一台自定义 DNS 服务器使其能够将malicious.com解析到不同的 IP 地址公网 IP 与内网 IP 交替返回。在实际测试中也可以直接使用现成的 DNS Rebinding 服务来免去自建 DNS 服务器的成本。例如本仓库 Server Side Request Forgery/README.md 的 Bypass Using DNS Rebinding 一节提到1u.ms这类 DNS rebinding 工具要实现在1.2.3.4与169.254.169.254云元数据服务地址之间轮换只需使用形如以下格式的域名make-1.2.3.4-rebind-169.254-169.254-rr.1u.ms用nslookup连续查询即可验证轮换效果两次查询返回不同地址$ nslookup make-1.2.3.4-rebind-169.254-169.254-rr.1u.ms Name: make-1.2.3.4-rebind-169.254-169.254-rr.1u.ms Address: 1.2.3.4 $ nslookup make-1.2.3.4-rebind-169.254-169.254-rr.1u.ms Name: make-1.2.3.4-rebind-169.254-169.254-rr.1u.ms Address: 169.254.169.254关联延伸在云场景下169.254.169.254正是 AWS EC2 元数据服务地址具体元数据端点列表见 SSRF-Cloud-Instances.md如http://169.254.169.254/latest/meta-data/iam/security-credentialsDNS Rebinding 常被用作获取该内网元数据的桥梁。2. 初始受害者交互Initial Victim Interaction在malicious.com上创建一个包含恶意 JavaScript 或其他利用机制的网页通过钓鱼、社会工程或广告投放等方式诱导受害者访问该恶意网页。3. 初始 DNS 解析Initial DNS Resolution当受害者的浏览器访问malicious.com时会向攻击者的 DNS 服务器查询该域名对应的 IPDNS 服务器先将malicious.com解析为一个看似合法的初始 IP例如203.0.113.1让页面正常加载、脚本正常执行。4. 重绑定到内网 IPRebinding to Internal IP浏览器完成初始请求后攻击者的 DNS 服务器将malicious.com的解析结果更新为私网或内网 IP例如192.168.1.1对应受害者路由器或其他内网设备这一步通常通过为初始 DNS 响应设置**极短的 TTLTime-To-Live**来实现强制浏览器在缓存过期后重新发起 DNS 解析从而拿到更新后的内网 IP。5. 同源利用Same-Origin Exploitation由于浏览器认为后续响应仍来自同一源malicious.com同源策略不再构成阻碍运行在受害者浏览器中的恶意 JavaScript 现在可以向内网 IP 或本机服务如192.168.1.1、127.0.0.1发起请求并读取响应从而绕过同源策略限制。实战示例使用 Singularity of Origin原文档给出的完整落地步骤如下推荐使用 NCC Group 的 Singularity 框架其 DNS Rebinding 攻击框架与 Web 客户端详见原文档工具清单注册一个域名按官方文档搭建 Singularity of OriginSetup and Installation根据你的目标编辑autoattackHTML 页面在浏览器中访问http://rebinder.your.domain:8080/autoattack.html等待攻击完成通常需要几秒到几分钟。补充说明本仓库 Headless Browser/README.md 的 DNS Rebinding 一节记录了针对 Chrome 的一类进阶变体Chrome 会同时发出A和AAAA两次 DNS 查询攻击者让AAAA返回合法公网 IPv6、A返回内网 IPv4Chrome 会优先连接 IPv6此时关闭 IPv6 监听器待浏览器回退到 IPv4 连接后即可从顶层窗口向 iframe 注入脚本窃取内网内容。这说明了 DNS Rebinding 在真实浏览器环境中往往需要结合浏览器自身的解析与回退行为来精细调整。防护绕过Protection Bypasses大多数 DNS 防护手段的实现方式是在 DNS 响应进入内网的边界处拦截包含不受欢迎 IP 地址的 DNS 应答包。最常见的是按 RFC 1918 定义的私网地址段进行拦截即10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。部分防护工具还支持额外拦截localhost127.0.0.0/8、本地内网网段甚至0.0.0.0/0全网段。需要说明的是这类防护通常默认关闭disabled by default。在防护被启用的场景下NCC Group 在 Singularity 的文档中记录并验证了多种绕过方法原文档收录了以下三种核心手法。绕过 1使用 0.0.0.0对于拦截 DNS 响应中包含127.0.0.1或127.0.0.0/8的防护规则可以改用 IP 地址0.0.0.0来访问本机localhost。原理部分操作系统和 Web 服务会将0.0.0.0视为本机地址在监听与连接场景下通常等价于回环而防护规则只匹配127.0.0.0/8网段0.0.0.0不在拦截范围内因此可以干净地绕过基于回环网段过滤的规则。绕过 2使用 CNAME 记录对于拦截所有内网 IP 地址的 DNS 防护方案可以利用DNS CNAME 记录绕过由于 DNS 响应中只返回一个内网服务器域名的 CNAME而没有直接出现内网 IP 地址因此针对 IP 地址的过滤规则不会被触发之后由本地内网 DNS 服务器负责解析该 CNAME最终仍能到达内网目标。原文档给出的验证命令使用dig查询并只显示应答部分$ dig cname.example.com noall answer ; DiG 9.11.3-1ubuntu1.15-Ubuntu example.com noall answer ;; global options: cmd cname.example.com. 381 IN CNAME target.local.可以看到应答记录中仅包含CNAME target.local.没有任何内网 IP 字面量从而绕过基于 IP 的过滤规则交由内网 DNS 将target.local.解析为实际内网地址。绕过 3使用 localhost 作为 CNAME对于拦截 DNS 响应中包含127.0.0.1的防护规则可以直接使用 localhost 作为 DNS CNAME 记录——响应中不出现任何127.0.0.1的 IP 字面量而localhost由系统解析器天然映射到回环地址。$ dig www.example.com noall answer ; DiG 9.11.3-1ubuntu1.15-Ubuntu example.com noall answer ;; global options: cmd localhost.example.com. 381 IN CNAME localhost.绕过思路小结防护规则绕过手法关键点拦截127.0.0.0/8返回0.0.0.00.0.0.0在本机访问场景等价回环但不在过滤网段内拦截所有内网 IPRFC 1918 等返回内网主机名的 CNAME响应无 IP 字面量过滤规则不触发由内网 DNS 再解析拦截127.0.0.1返回CNAME localhost.无 IP 字面量localhost由解析器映射到回环地址仓库内相关攻击面DNS Rebinding 与其他漏洞的结合DNS Rebinding 的价值往往体现在与其他攻击面联动时本仓库在多个章节收录了相关案例SSRF 场景Server Side Request Forgery/README.md 在 Bypass Using DNS Rebinding 一节中将 DNS Rebinding 作为 SSRF 的绕过手段即创建一个在两个 IP 之间切换的域名从而让服务端发起的请求先通过外网校验、再落到内网目标如云元数据服务169.254.169.254。这与其 Cloud 章节SSRF-Cloud-Instances.md中的元数据服务端点配合可用于读取 IAM 临时凭证。Headless Browser 场景Headless Browser/README.md 记录了在无头浏览器自动化测试中利用 Chrome 的A/AAAA双查询与 IPv6 优先策略进行 DNS Rebinding 的细节并提醒 Chrome 默认会拦截一批已知端口且默认阻止除 localhost 之外的本地网络地址访问。IP 混淆辅助Server Side Request Forgery/Files/ip.py 提供了多种 IP 编码与绕过验证脚本如使用2852039166十进制整数形式等价于169.254.169.254或0xa9fea9fe十六进制形式可在 DNS 防护之外进一步混淆目标地址。检测与防护建议结合原文档中关于防护机制的描述给出以下对抗要点在 DNS 边界过滤拦截进入内网的 DNS 响应中包含私网 IPRFC 1918、127.0.0.0/8、0.0.0.0等非公网地址的应答并注意 CNAME 类型的间接解析同样需要审查内网域名不能被外部 DNS 权威解析。DNS 固定DNS Pinning在浏览器或代理层面将域名首次解析的 IP 固定禁止后续解析结果变更可从根本上阻止域名换 IP但需注意浏览器策略差异以及公网 CDN 场景下轮询解析的误伤。服务端防护内网与云元数据服务169.254.169.254应通过防火墙、Host 头校验、鉴权令牌如 AWS 元数据服务的 IMDSv2 会话令牌等方式限制访问降低即使被重绑定也能读取敏感信息的影响面。用户侧意识对于安全测试场景应在隔离环境如专用测试浏览器或虚拟机中执行 DNS Rebinding 验证避免影响真实生产内网。结语DNS Rebinding 是 Web 安全测试中浏览器即代理思路的典型代表它通过操纵域名解析结果在合法的同源关系内完成了对同源策略的突破。原文档给出了从原理、工具、五阶段方法论到三种防护绕过手法的完整闭环本文在此基础上结合本仓库的 SSRF、Headless Browser 与云实例章节补充了可复现的轮换域名验证命令、Chrome 解析行为细节及联动攻击面。在实战中建议优先使用 Singularity 框架完成自动化验证再按目标环境的防护强度逐步尝试 0.0.0.0、CNAME、localhost 等绕过手段。本文事实依据核心原理、方法论、绕过手法与验证命令均来自 DNS Rebinding/README.mdSSRF 联动案例与1u.ms轮换域名验证命令来自 Server Side Request Forgery/README.mdBypass Using DNS Rebinding 一节Chrome 双 DNS 查询与 IPv6 回退细节来自 Headless Browser/README.md云元数据服务地址与端点来自 SSRF-Cloud-Instances.md。赞分享网络安全应用安全渗透测试【免费下载链接】PayloadsAllTheThingsA list of useful payloads and bypass for Web Application Security and Pentest/CTF项目地址https://gitcode.com/GitHub_Trending/pa/PayloadsAllTheThings点击查看免费下载相关推荐PayloadsAllTheThings 实战指南CSV 注入Formula Injection / DDE攻击载荷与绕过技巧PayloadsAllTheThings 实战指南CSV 注入Formula Injection / DDE攻击载荷与绕过技巧 导读 本文以 Payloa网络安全应用安全渗透测试Headless Browser 攻击面详解从本地文件读取到远程调试端口与 DNS RebindingPayloadsAllTheThings 实战指南Headless Browser 攻击面详解从本地文件读取到远程调试端口与 DNS RebindingPayloadsAllTheThings 实战指南网络安全应用安全渗透测试Tabnabbing 攻击详解Reverse Tabnabbing 原理、利用与防护基于 PayloadsAllTheThingsTabnabbing 攻击详解Reverse Tabnabbing 原理、利用与防护基于 PayloadsAllTheThings 导读 本文以仓库中 T网络安全应用安全渗透测试创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表