浅谈DNS-rebinding

news2024/12/26 3:15:57

为啥突然要总结一下这个很老的知识点,我也不知道,可能太菜了,闲下来总得学点什么~

DNS Rebinding

0x01 攻击简介

DNS Rebinding也叫做DNS重绑定攻击或者DNS重定向攻击。在这种攻击中,恶意网页会导致访问者运行客户端脚本,攻击网络上其他地方的计算机。

在介绍DNS Rebinding攻击机制之前我们先了解一下Web同源策略,

Web同源策略

同源策略(英语:Same-origin policy)是指在Web浏览器中,允许某个网页脚本访问另一个网页的数据,但前提是这两个网页必须有相同的URL、主机名和端口号,一旦两个网站满足上述条件,这两个网站就被认定为具有相同来源。此策略可防止某个网页上的恶意脚本通过该页面的文档对象模型访问另一网页上的敏感数据,比如XSS,XXE,SSRF等基于网页上的恶意脚本攻击。

同源的定义:如果两个 URL 的 协议、域名、端口都相同的话,则这两个 URL 是同源。

同源策略对Web应用程序具有特殊意义,因为Web应用程序广泛依赖于HTTP cookie来维持用户会话(session),所以必须将不相关网站严格分隔,以防止丢失数据泄露。

值得注意的是同源策略仅适用于脚本,这意味着某网站可以通过相应的HTML标签访问不同来源网站上的图像、CSS和动态加载 脚本等资源。而跨站请求伪造(CSRF)就是利用同源策略不适用于HTML标签的缺陷。

所以从理论上来讲,同源策略是能够有效的保证:客户端脚本只能访问为脚本提供服务的同一主机上的内容。

至此如何绕过Web同源策略也成了众多hacker研究的地方。

0x02 攻击原理:

这里说一下利用的TTL是什么:

TTL是英语Time-To-Live的简称,意思为一条域名解析记录在DNS服务器中的存留时间。当各地的DNS服务器接受到解析请求时,就会向域名指定的NS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。

即TTL的数值越小,修改记录后所受的影响生效越快。

这里我们可以来构造一个DNS 重绑定的案例:

例如,要在192.168.32.10和127.0.0.1之间切换,我们可以将他们编码为dwords,使用rbndr工具:

7f000001.c0a8200a.rbndr.us

接下来,我们测试一下:

# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 127.0.0.1
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 127.0.0.1
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 127.0.0.1
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 192.168.32.10
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 127.0.0.1
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 127.0.0.1
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 192.168.32.10
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 127.0.0.1

由此就达到了一个DNS 重绑定的效果。

0x03 攻击机制

攻击者无法控制名称服务器的载体,所有解析主机名(或 IP 地址,仍然是有效主机名)的请求都被重定向到由攻击者控制和操作的备用名称服务器。例如,如果我们有一个网址为 www.example-a.com 的网站,并且我们想要访问私有内部域邮件服务器或只能通过该特定私有 IP 地址访问的其他服务,则可以使用 DNS 重新绑定攻击来伪造这些地址之一。

69d752cf0d87114b1a493a0a61078fe3.png
image-20230404221756020

0x04 攻击示例

  1. 1. 攻击者注册一个域名,例如 IP 地址为 1.3.5.7 的 www.evil.com,将其委托给自己的 DNS 服务器(1.3.5.4),并使用钓鱼链接或电子邮件获取 HTTP 流量。

  2. 2. DNS 服务器没有发送正常的 TTL 记录,而是发送了一个非常短的 TTL 记录(例如,1 秒),防止条目 [www.evil.com, 1.3.5.7] 的 DNS 响应被缓存在受害者的(192.168.1.10 ) 浏览器。

  3. 3. 对手的服务器首先用包含服务器 IP 地址 (1.3.5.7) 的JavaScript 等恶意脚本响应受害者。

  4. 4. 对手使用 XMLHttpRequest (XHR) 将 HTTP 请求或 HTTPS 请求直接发送到对手的服务器并加载响应。

  5. 5. 恶意脚本允许对手将主机名重新绑定到防火墙后面的目标服务器的 IP 地址 (192.168.1.2)。

  6. 6. 然后服务器响应对手的真实目标,即与受害者(192.168.1.10)同域的内部主机IP(192.168.1.2)。

  7. 7. 由于同一个名称解析为这两个 IP 地址,浏览器会将这两个 IP 地址(1.3.5.7 和 192.168.1.2)置于同一安全区域并允许信息在地址之间流动。

  8. 8. 此外,攻击者可以通过发送多个短期IP地址来实现扫描和访问受害者本地网络(192.168.XX)中的所有内部主机。

0x05 攻击危害

DNS Rebinding可以通过让受害者的Web浏览器访问专用IP地址的机器并将结果返回给攻击者来破坏专用网络。它也可以用于使用受害者机器发送垃圾邮件,分布式拒绝服务攻击(DDOS)或其他恶意活动,也就是我们常听说的肉机和僵尸机。

bcf401dec06afd111f7607b089e58777.png

DDOS

0x04-1 通过 DNS 重新绑定攻击进行网络渗透测试:

在某些情况下,用户会被诱骗使用这些网(例如,私人电子邮件服务器)创建网络钓鱼网站。由于发送到被劫持 URL 的所有流量现在都被发送回原始服务器,因此它变得完全混乱并迫使用户安装网络钓鱼页面。以此来达到获取用户信息或者是用户权限的作用。

ad44d9b28d7a1619468191e87e7acef4.jpeg

网络钓鱼

0x06 将DNS Rebinding应用到实际漏洞挖掘

CVE-2022-4096

漏洞描述:1.8.2 之前的 GitHub 存储库 appsmithorg/appsmith 中的服务器端请求伪造 (SSRF)

复现链接:https://infosecwriteups.com/ssrf-via-dns-rebinding-cve-2022-4096-b7bf75928bb2

CVE-2023-26492

漏洞描述:Directus 是用于管理 SQL 数据库内容的实时 API 和应用程序仪表板。当从远程 Web 服务器导入文件(POST 到 /files/import)时,Directus 容易受到服务器端请求伪造 (SSRF) 的攻击。攻击者可以通过执行 DNS 重新绑定攻击并查看来自内部服务器的敏感数据或执行本地端口扫描来绕过安全控制。攻击者可以利用此漏洞访问高度敏感的内部服务器并窃取敏感信息。此问题已在版本 9.23.0 中修复。

CVE链接:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-26492

CVE-2022-43548

漏洞描述:由于 IsAllowedHost 检查不充分,Node.js 版本 <14.21.1、<16.18.1、<18.12.1、<19.0.1 中存在操作系统命令注入漏洞,该漏洞很容易被绕过,因为 IsIPAddress 没有正确检查 IP在发出允许重新绑定攻击的 DBS 请求之前地址无效。https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-32212 中针对此问题的修复不完整,这个新的 CVE 是为了完成修复。

CVE链接:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-43548

针对CVE-2022-43548CVE-2023-26492后续会有完整的复现过程文章,期待一下~

0x07 参考链接

[Web同源策略] https://zh.wikipedia.org/wiki/%E5%90%8C%E6%BA%90%E7%AD%96%E7%95%A5)

[DNS Rebinding] (https://en.wikipedia.org/wiki/DNS_rebinding)

[CVE-2022-4096] (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-4096)

[DNS Rebinding Attacks Explained] (https://danielmiessler.com/blog/dns-rebinding-explained/)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/425464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot-参数校验

SpringBoot 中使用 Valid 注解 Exception 全局处理器优雅处理参数验证 注解Valid的主要作用是用于数据效验&#xff0c;可以在定义的实体中的属性上&#xff0c;添加不同的注解来完成不同的校验规则。Controller类中在参数中添加Valid注解来开启效验功能Valid配合 Spring 会抛…

2023年4月10日下午总结和近日感悟

技术和钱 人生&#xff0c;活到现阶段&#xff0c;已于一月前&#xff0c;深感技术就是这么回事&#xff0c;不再像以前那样为学习某样东西而不问来由&#xff0c;闷头去学&#xff08;也许是因为即将步入下一个人生阶段&#xff09;。虽然&#xff0c;乐于也想去接受新技术&a…

centos7下基于nginx+uwsgi部署Django项目

文章目录一&#xff1a;基础环境介绍&#xff1a;二&#xff1a;部署环境安装配置&#xff1a;1.基础依赖环境安装2.安装wegt&#xff0c;vim&#xff0c;unzip等必须命令3.安装python与pip&#xff08;或者python多版本管理工具pyenv等&#xff09;4.安装nginx5.安装uwsgi三&a…

json和CMake简单入门

Json 介绍 Json是一种轻量级的数据交换格式&#xff08;也叫数据序列化方式&#xff09;。Json采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 Json 成为理想的数据交换语言。 易于人阅读和编写&#xff0c;同时也易于机器解析和生成&#xff…

Binder基本知识

1&#xff1a;IPC 原理 从进程角度来看 IPC 机制 每个 Android 的进程&#xff0c;只能运行在自己进程所拥有的虚拟地址空间。对应一个4GB 的虚拟地址空间&#xff0c;其中 3GB 是用户空间&#xff0c;1GB 是内核空间&#xff0c;当然内核空间的大小是可以通过参数配置调整的…

网络安全之密码学

目录 密码学 定义 密码的分类 对称加密 非对称加密 对称算法与非对称算法的优缺点 最佳解决办法 --- 用非对称加密算法加密对称加密算法的密钥 非对称加密如何解决对称加密的困境 密钥传输风险 密码管理难 常见算法 对称算法 非对称算法 完整性与身份认证最佳解决…

优维低代码:定制构件的打包及部署

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 连载…

用Python写一个BMI计算代码

有粉丝问我怎么写一个BMI算法&#xff0c;安排 height float(input("请输入身高&#xff08;米&#xff09;: ")) weight float(input("请输入体重&#xff08;千克&#xff09;: ")) 计算BMI bmi weight / (height ** 2) 显示结果 print("您的…

MySQL8.0.32安装以及环境配置

文章目录一、安装MySQL二、错误集1. 如果操作失误&#xff0c;可以重新安装一、安装MySQL 下载MySQL的社区版的压缩包&#xff1a;https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.32-winx64.zip 将压缩包解压到你要安装的目录中 将对应的安装路径添加到环境变量中…

Java面试核心知识点梳理(二)——Java集合

文章目录前言1. List1.1 ArrayList&#xff08;数组&#xff09;1.2 Vector&#xff08;数组、线程安全&#xff09;1.3 LinkedList&#xff08;链表&#xff09;2. Set2.1 HashSet&#xff08;Hash表&#xff09;2.2 TreeSet&#xff08;二叉树&#xff09;2.3 LinkHashSet&am…

3分钟通过日志定位bug,这个技能测试人必须会

♥ 前 言 软件开发中通过日志记录程序的运行情况是一个开发的好习惯&#xff0c;对于错误排查和系统运维都有很大帮助。 Python 标准库自带了强大的 logging 日志模块&#xff0c;在各种 python 模块中得到广泛应用。 一、简单使用 1. 入门小案例 import logging logging.ba…

国内Google翻译失效的解决方法(MAC/WIN)

Google宣布停止在中国大陆的翻译服务&#xff0c;原因是&#xff1a;使用率低&#xff1f;&#xff1f;&#xff0c;这导致Chrome浏览器网页翻译失效。对于一些使用Chrome&#xff0c;经常鼠标下一秒就在大洋彼岸扒拉资料&#xff0c;且英语不太好的同学来说变得非常难受。为此…

【软考中级·网络工程师】校验码差错控制

差错控制&#x1f349; 无论通信系统如何可靠&#xff0c;都不能做到完美无缺。因此&#xff0c;必须考虑怎样发现和纠正信号传输重的差错。通信过程中出现的差错大致可以分为两类&#xff1a; 一类是由热噪声引起的随机错误&#xff1b;热噪声&#xff1a;一种由电子的热运动…

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升

专题一 空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 Geodatabase地理数据库 ​ 专题二 ArcGIS专题地图制作 2.1专题地图制作规范 2.2 空间数据的准备与处理 2.3 空间数据可视化&#xff1a;地图符号…

无头盔PICO-unity开发日记3(UI按钮点击)

目录 1.UI界面加入组件 2.加入xr输入模块 3.设置光线投射遮罩 结果&#xff1a; 前提&#xff1a;做好一个ui界面 1.UI界面加入组件 画布加跟踪设备图形光线投射仪&#xff08;tracked device graphic raycaster&#xff09; 允许画布被追踪设备操纵 2.加入xr输入模块 sys…

C++ --模拟实现搜索二叉树

文章目录#搜索二叉树1. 搜索二叉树特点2. 操作分析2.0 结点结构2.1 插入2.2 升序查看2.3 查找2.4 删除2.5 前序拷贝构造3. 完整代码4. 时间复杂度分析5. 简单应用5.1 字典搜索5.2 统计次数#搜索二叉树 1. 搜索二叉树特点 若它的左子树不为空&#xff0c;则左子树上所有节点的…

Dockerfile及新型容器镜像构建技术

文章目录一、容器镜像分类1、操作系统类2、应用类二、容器镜像获取方法1、在dockerhub直接下载2、把操作系统中文件系统打包为容器镜像3、把正在运行的容器打包为容器镜像&#xff0c;即docker commit4、通过dockerfile实现容器镜像的自定义以及生成三、dockerfile1、dockerfil…

数据库管理系统PostgreSQL部署安装完整教程

PostgreSQL是一个开源的关系型数据库管理系统&#xff0c;它支持大量的数据类型和复杂的查询语言&#xff0c;可以用于各种应用程序。它是一个高性能的数据库&#xff0c;可以处理大量的数据&#xff0c;并且具有良好的可扩展性和可靠性。 目录 一.Linux系统安装PostgresSQL&a…

机器学习——线性模型之Softmax回归

问&#xff1a;Softmax回归模型是一种典型处理多分类任务的非线性分类模型 答&#xff1a;错误。Softmax回归是线性分类模型。实际上是逻辑回归的拓展&#xff0c;它将逻辑回归的二分类推广到了多分类&#xff0c;用逻辑回归的方法解决多分类问题。 线性模型——Softmax回归 …

Linux之基础IO

文章目录一.关于文件的共识二.复习C语言的文件操作1.打开文件2.向文件中写入数据3.向文件中追加数据三.有关文件的系统调用1.open&#xff08;文件打开&#xff09;2.write&#xff08;向文件写入&#xff09;3.read(读文件)四.文件描述符1.进程如何找到自己的文件2.为什么文件…