浅析DNS Rebinding

news2024/12/23 0:09:47

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 重绑定的效果。

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

0x03 攻击机制

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

image-20230404221756020

0x04 攻击示例

  1. 攻击者注册一个域名,例如 IP 地址为 1.3.5.7 的 www.evil.com,将其委托给自己的 DNS 服务器(1.3.5.4),并使用钓鱼链接或电子邮件获取 HTTP 流量。
  2. DNS 服务器没有发送正常的 TTL 记录,而是发送了一个非常短的 TTL 记录(例如,1 秒),防止条目 [www.evil.com, 1.3.5.7] 的 DNS 响应被缓存在受害者的(192.168.1.10 ) 浏览器。
  3. 对手的服务器首先用包含服务器 IP 地址 (1.3.5.7) 的JavaScript 等恶意脚本响应受害者。
  4. 对手使用 XMLHttpRequest (XHR) 将 HTTP 请求或 HTTPS 请求直接发送到对手的服务器并加载响应。
  5. 恶意脚本允许对手将主机名重新绑定到防火墙后面的目标服务器的 IP 地址 (192.168.1.2)。
  6. 然后服务器响应对手的真实目标,即与受害者(192.168.1.10)同域的内部主机IP(192.168.1.2)。
  7. 由于同一个名称解析为这两个 IP 地址,浏览器会将这两个 IP 地址(1.3.5.7 和 192.168.1.2)置于同一安全区域并允许信息在地址之间流动。
  8. 此外,攻击者可以通过发送多个短期IP地址来实现扫描和访问受害者本地网络(192.168.XX)中的所有内部主机。

0x05 攻击危害

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

DDOS

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

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

网络钓鱼

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后续会有完整的复现过程文章,期待一下~

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

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

相关文章

智慧校园人员定位系统解决方案

人员定位是安全管理中最重要的一个环节&#xff0c;尤其是石化、矿业、电力、建筑等高危行业&#xff0c;人员安全管理更是重中之重&#xff0c;除了工业领域&#xff0c;其它领域也需要人员安全管理&#xff0c;比如&#xff1a;学校、医院、养老院、物业、环卫等。下面我们以…

SpringSecurity之基本原理——过滤器加载过程

前言 前一篇讲解了SpringSecurity的过滤器链的基本只是&#xff0c;今天我们就要进入过滤器&#xff0c;看看其加载过程是如何的&#xff1f; 相信认真度过第一篇文章的小伙伴还记得&#xff0c;我说在SpringBoot出现后&#xff0c;帮助我们省去了那些繁琐的配置&#xff0c;…

2023年MathorCup数模A题赛题

A 题 量子计算机在信用评分卡组合优化中的应用 在银行信用卡或相关的贷款等业务中&#xff0c;对客户授信之前&#xff0c;需要先通过 各种审核规则对客户的信用等级进行评定&#xff0c;通过评定后的客户才能获得信 用或贷款资格。规则审核过程实际是经过一重或者多重组合规则…

树的直径问题

一&#xff0c;定义 树的直径就树中所有最短路经距离的最大值 求取树的直径可以使用两遍dfs或者树形dp获得 二&#xff0c;两遍dfs获得树的直径&#xff08;注意&#xff0c;该方法边权必须都为正边权&#xff09; 思路&#xff1a; 我们首先任取一点走dfs&#xff0c;然后…

索引:索引知识重复习,什么是索引、索引的类型、建立索引及【最左匹配原则】、Explain查看sql的执行计划

文章目录什么是索引索引的类型主键索引&#xff08;primary key&#xff09;普通索引&#xff08;index&#xff09;复合索引全文索引&#xff08;fulltext&#xff09;空间索引唯一索引索引修改及删除Explain一、using filesort(减慢查询效率)二、Using temporary三、using in…

TensorFlow 1.x学习(系列二 :3):变量与tensorboard可视化

文章目录1.变量2.可视化学习 Tensorboard3.可视化过程中遇到的问题&#xff1a;import tensorflow as tf1.变量 变量op: 变量也是一种OP&#xff0c;是一种特殊的张量&#xff0c;能够进行存储持久化&#xff0c;它的值就是张量&#xff0c;默认被训练和常量不同&#xff08;…

15个 AI-powered应用,加速学术写作和阅读

文章目录写作方面1.Jenni AI&#xff08;推荐&#xff09;2.Paperpal阅读方面3.Schoarlcy4.chatpdf5.Casper6.SciSpace&#xff08;推荐&#xff09;文献管理/写论文笔记用7.lateral8. ClioVis9.Glasp10. Audiopen学术目的的搜索引擎11. Consensus&#xff08;推荐&#xff09;…

【私有云盘】搭建PHP轻量文件管理器 - TinyFileManager「公网远程访问」

文章目录前言1. Tiny File Manager网站搭建1.1.Tiny file manager下载和安装1.2.Tiny file manager网页测试2. Cpolar内网穿透的安装和注册2.1 本地网页发布2.2 Cpolar云端设置2.3 Cpolar本地设置3. 公网访问测试4. 结语前言 文件共享和查阅是现在网络最常见的应用场景&#x…

windows环境nodejs卸载与安装

windows环境nodejs卸载与安装一、卸载1.1 控制面板卸载程序1.2 手动清理相关文件夹二、安装2.1 下载安装包2.2 安装操作2.3 验证安装是否成功2.4 环境变量设置2.4.1 node程序添加到系统环境变量PATH2.4.2 修改全局模块下载路径2.4.2.1 node_global路径变量2.4.2.2 node_modules…

Docker应用部署

文章目录Docker 应用部署一、部署MySQL二、部署Tomcat三、部署Nginx四、部署RedisDocker 应用部署 一、部署MySQL 搜索mysql镜像 docker search mysql拉取mysql镜像 docker pull mysql:5.6创建容器&#xff0c;设置端口映射、目录映射 # 在/root目录下创建mysql目录用于存…

【Go语言从入门到精通系列-基础篇】Go语言包的管理以及基础语法与使用。

系列文章目录 【Go语言从入门到精通系列-基础篇】Go安装 语言特性&#xff0c;以及开启你人生中的第一个go程序 【Go语言从入门到精通系列-基础篇】Go语言包的管理以及基础语法与使用。 Go语言从入门到精通系列-基础篇系列文章目录前言第二章 Go语言包的管理以及基础语法与使…

zabbix介绍 | 监控搭建和部署

zabbix介绍 | 监控搭建和部署一.Zabbix简介二.Zabbix监控原理三.Zabbix监控的最常见五个程序组件四&#xff0c;搭建zbx监控4.1准备二台虚拟机4.2 服务端客户端获取 zabbix 的下载源4.3 服务端安装修改 192.168.10.104.4 服务端安装 zabbix 所需的数据库&#xff08;192.168.10…

点监督的实例分割

目录Pointly-Supervised Instance Segmentation摘要方法Annotation format and collection训练点标记模型实验结果Pointly-Supervised Instance Segmentation 摘要 点注释来进行实例分割的弱监督标签除了边界框还有一组随机点对PointRend实例分割模块的修改对于每个对象&…

2020年 团体程序设计天梯赛——题解集

Hello各位童学大家好&#xff01;&#x1f60a;&#x1f60a;&#xff0c;茫茫题海你我相遇即是缘分呐&#xff0c;或许日复一日的刷题已经让你感到疲惫甚至厌倦了&#xff0c;但是我们真的真的已经达到了我们自身极限了吗&#xff1f;少一点自我感动&#xff0c;没有结果前别太…

Python爬虫基础之如何对爬取到的数据进行解析

目录1. 前言2. Xpath2.1 插件/库安装2.2 基础使用2.3 Xpath表达式2.4 案例演示2.4.1 某度网站案例3. JsonPath3.1 库安装3.2 基础使用3.2 JsonPath表达式3.3 案例演示4. BeautifulSoup4.1 库安装4.2 基础使用4.3 常见方法4.4 案例演示参考文献原文地址&#xff1a;https://www.…

OpenCV实例(二)手势识别

OpenCV实例&#xff08;二&#xff09;手势识别1.手势识别概述1.1.获取轮廓的凸包1.2.凸缺陷1.3.凸缺陷占凸包面积比2.手势识别过程2.1.识别流程3.石头、剪刀、布的识别作者&#xff1a;Xiou 1.手势识别概述 手势识别的范围很广泛&#xff0c;在不同场景下&#xff0c;有不同…

tp5实现导入excel表到数据库

hello&#xff0c;大家好&#xff0c;好长时间没有更新文章了。最近一直在忙着做项目。所以断更了。 那么好&#xff0c;各位老铁是否想要实现导入导出的功能 请关注我&#xff0c;解密如何实现导入导出&#xff0c; 那么今天先来讲一下用thinkphp5.0 如何实现Excel表格导入数据…

如何实现 Java SpringBoot 自动验证入参数据的有效性

Java SpringBoot 通过javax.validation.constraints下的注解&#xff0c;实现入参数据自动验证 如果碰到 NotEmpty 否则不生效&#xff0c;注意看下 RequestBody 前面是否加上了Valid Validation常用注解汇总 Constraint详细信息Null被注释的元素必须为 nullNotNull被注释的元…

CentOS7.6 磁盘挂载

CentOS7.6 磁盘挂载 目录CentOS7.6 磁盘挂载1.磁盘说明2.磁盘分区步骤1.磁盘说明 1、Linux硬盘分IDE硬盘和SCSI硬盘&#xff0c;目前基本上是SCSI硬盘 2、对于IDE硬盘&#xff0c;驱动器标识符为"hdx"&#xff0c;""代表分区&#xff0c;前四个分区用数字…

selenium1—软件测试

文章目录1.什么是自动化测试2.如何实施自动化测试3.UI自动化测试的好处4.自动化框架5.为什么要选择selenium6.webdrive的原理7.selenium IDE1.什么是自动化测试 在预设的条件下&#xff08;自动化脚本&#xff09;运行系统&#xff0c;预设的条件包括正常的和异常的情况&#…