01 — 什么是RPO攻击? RPO(Relative Path Overwrite)相对路径覆盖,是一种新型攻击技术,最早由GarethHeyes在其发表的文章中提出。 但是在客户端识别url时是不会解码的,正常情况下解码%2f解码后应该加载的是rpo/xxx/../x.js,最后也就是rpo/x.js文件;而这里加载的是/x.js,所以浏览器是没有解码%2f的。 03 — 实战解析 第一个场景:加载任意目录下静态资源文件 我们看看下面一个测试环境: /rpo/111/1.php文件中通过相对路径加载了上层目录既/rpo/x.js和/rpo/x.sss文件。 比如我们输入如下url: /rpo/222/2.php%2f..%2f..%2f111/1.php 服务器端识别为: /rpo/222/2.php/../../111/1.php实际上也就是/rpo/111 所以这里证明存在RPO攻击问题。
[TOC] 0x00 前言介绍 描述:说实在第一个看这个漏洞的时候是没挣明白的有点绕(大佬一眼应该就能观定),下面大致对PRO做一个介绍; 什么是RPO攻击? RPO(Relative Path Overwrite)相对路径覆盖,是一种新型攻击技术,最早由Gareth Heyes在其发表的文章中提出。 特别是JavaScript和src引入JavaScript(会暂停直接进行解析并执行,并且连续载入两个JavaScript文件加载过程中会有一段时间的间隔,这段时间就是js代码执行的时间) 0x01 RPO 漏洞原理(principle) 原理:RPO漏洞相对路径覆盖并且源码中引用了相对路径css文件所导致的脆弱性漏洞,一般的可利用手段就是CSS攻击钓鱼和CSS-XSS 攻击。 本质:根据服务器解析与浏览器(客户端)解析URL之间的微小差异而产生的漏洞, RPO漏洞攻击的条件: 可利用页面无DOCTYPE 标签中包含相对路径的CSS/js/swf文件 浏览器解析页面路径有误而导致
在衡量系统高可用的时候,我们经常能看到几个专业词汇,例如RPO和RTO,像OceanBase号称可以做到RPO=0,RTO<30s,RPO和RTO代表了什么? 可以看出来,RTO和RPO服务于不同的目标,RTO涉及应用程序和系统,但主要描述应用程序停机时间的限制。RPO主要与失败事件后丢失的数据量有关。 因此,从客户的角度,如果某个服务节点发生了故障,肯定希望数据不丢(RPO=0),而且能尽快恢复(RTO 越小越好)。 除非你的业务,只关注RPO,不关注性能的稳定性情况,或者能接受不稳定的可能,但是必须保证RPO=0。 造成这一情况的根本原因,是“主从复制”模式下从节点不具备自动切主的能力。 因此,这种技术不仅能保证RPO=0,而且大大减小了RTO,相比传统“主从复制”技术来说可以提供更强大的高可用能力。
[TOC] 0x00 前言介绍 描述:说实在第一个看这个漏洞的时候是没挣明白的有点绕(大佬一眼应该就能观定),下面大致对PRO做一个介绍; 什么是RPO攻击? RPO(Relative Path Overwrite)相对路径覆盖,是一种新型攻击技术,最早由Gareth Heyes在其发表的文章中提出。 特别是JavaScript和src引入JavaScript(会暂停直接进行解析并执行,并且连续载入两个JavaScript文件加载过程中会有一段时间的间隔,这段时间就是js代码执行的时间) 0x01 RPO 漏洞原理(principle) 原理:RPO漏洞相对路径覆盖并且源码中引用了相对路径css文件所导致的脆弱性漏洞,一般的可利用手段就是CSS攻击钓鱼和CSS-XSS 攻击。 本质:根据服务器解析与浏览器(客户端)解析URL之间的微小差异而产生的漏洞, RPO漏洞攻击的条件: 可利用页面无DOCTYPE 标签中包含相对路径的CSS/js/swf文件 浏览器解析页面路径有误而导致
Fuck the “Share your mind” 这是18-03-24强网杯的一道题,也是从这里开始接触RPO这个漏洞,以下简单介绍一下这道题的做法: 首先就是一个登录界面 ? 也就是我们今天要介绍的主角,RPO导致的XSS漏洞了…… phpinfo url 模式 在看漏洞流程之前,我们先介绍一个知识点,就是按照目录方式获取资源,以及phpinfo URL模式。 漏洞成因 文章最开始提到过,RPO漏洞就是“相对路径覆盖”,而这道题的漏洞产生,也是因为相对路径 ? 小练习 俗话说的好“Talk is cheap, show me the Code”,如果对这RPO还是有疑惑的话,可以用以下的代码片段自己动手测试一下。 在Github上也有一个CTF题目的源码,利用RPO,进行XSS+CSRF攻击。
/static/rpo.css'></script>";echo "<link rel='stylesheet' href='../static/<em>rpo</em>.css'></link>"? > 看看在编码前后的 url 下有什么差异: 编码前,访问的 css 路径: http://localhost/RPO/static/rpo.css ? /RPO/ 相当于使用 cd .. 命令回到上一级文件夹,在 RPO 文件夹下有 rpo、static 两个文件夹,所以 index.php 是一个 rpo 文件,回到上一级是 RPO。 ? 那么很简单了,url为 http://localhost/RPO/rpo%2findex.php 时,最后一个可用的 / 在 rpo 前面,那么根目录就是 http://localhost/ 引入的 css
什么是RPO RPO(Relative Path Overwrite)相对路径覆盖,主要就是利用服务端和客户端对url的处理的一些差异,来让客户端加载我们想让客户端加载的文件。 利用的基础知识 源码 文件结构 rpo/ ----yang/ --------index.php --------a.js ----a.js rpo/yang/index.php hahahah <script /a.js"></script> rpo/yang/a.js alert("i'm is yang/a.js"); rpo/a.js alert("i'm is rpo/a.js"); 服务端处理url #页面返回异常,显示Not Found Nginx url及返回结果 http://127.0.0.1/rpo/yang/index.php #页面返回正常 http://127.0.0.1/rpo RPO参考链接 http://blog.nsfocus.net/rpo-attack/
基本介绍 Gareth Heyes在2014年首次提出了一种新型攻击手法—RPO(Relative Path Overwrite)相对路径覆盖,该漏洞是一种利用相对URL路径覆盖目标文件的一种攻击手段, /之后再去查找请求的文件,所以可以找到nginx.php文件: http://192.168.204.134/RPO/test/..%2fnginx.php ————> ..%2fnginx.php /index.php/page/1重写为http://192.168.204.134/RPO/test/1.html,同时构造一下index.php <! ,这实际上就是RPO攻击的工作原理 执行案例2 RPO攻击并不仅限于诸如"styles.css"之类的相对URL,它还可以攻击诸如"../.. ,这样可以避免使用相对路径,从而避免RPO漏洞的发生 输入验证:对用户输入的文件名进行严格的验证,确保输入的文件名只包含合法的字符,避免输入包含..
第一次听到RPO,我以为是专门割韭菜的IPO,加上说这话的人不断对我挤眉弄眼,以至于我手抖,怎么搜都搜不到这个技术名词。 到了最后我才弄明白,他说的是RPO,而不是IPO,是灾备场景中的名词。 RTO = Recovery Time Objective = 恢复时间目标 RPO = Recovery Point Object = 恢复点目标 其差别,一个是Time、一个是Point。 如果你的业务能够忍受丢失最后2分钟的数据,那么你的RPO就是2分钟。 值得注意的是,任何宣称RTO=0和RPO=0的厂商,都是在吹牛皮。 但RPO倒是可以做到逼近0损失的。因为目前的数据库服务,大多数都会写一份预写日志来防止异常发生。
定义恢复点目标 (RPO) 和恢复时间目标 (RTO) 容限至关重要,但更重要的是构建一个能够支持您最严格 SLA 的环境。 定义恢复点目标 (RPO) 和恢复时间目标 (RTO) IT团队需要为其应用程序确定恢复点目标 (RPO) 和恢复时间目标 (RTO) 容限。RPO定义了灾难发生时可接受的数据丢失量。 RPO和RTO的确定取决于许多因素,包括应用程序的关键性、服务级别协议 (SLA) 或法规要求。 在复杂的Kubernetes环境中支持低RPO 在开发关键的Kubernetes应用程序时,务必为其提供能够满足低RPO和RTO要求的环境。 为了满足要求几乎没有数据丢失的严格RPO要求,您需要一个能够复制数据无论其位于何处的公共存储层。
核心系统(如医疗HIS、制造业MES)往往要求RPO(恢复点目标)趋近于零、RTO(恢复时间目标)分钟级,以确保业务连续性;而辅助系统(如OA、邮件)则可容忍小时级的数据恢复。 云原生设计:无缝适配混合云环境针对企业上云趋势,万能备份一体机深度集成多云接口与Kubernetes编排能力,提供三大云场景支持:云间迁移:一键完成AWS、阿里云、私有云之间的数据迁移,RPO 医疗行业:生命数据零丢失的守护者某三甲医院部署万能备份一体机后,构建了分级保护体系:HIS系统:通过实时复制+双活容灾,RPO=0、RTO<2分钟,保障挂号、处方核心业务连续性。
别再说“多活一份数据就安全了”:云上灾备的真相,是你根本没想清楚RTO/RPO说句大实话——绝大多数团队做灾备,其实是在“心理安慰”,而不是在做“真正可用的系统设计”。 RPO是多少?极端情况下怎么恢复?十有八九,答不上来。今天这篇,我们就把“云上灾备+跨区复制+RTO/RPO设计”这件事,一次聊透。 2️⃣RPO(RecoveryPointObjective)最多能丢多少数据?0(不能丢)1分钟数据10分钟数据这是“数据丢失容忍度”。 )展开代码语言:TXTAI代码解释主库写入→立即返回→异步同步特点:RPO>0(可能丢数据)性能好结论很现实:你要低延迟,就必须接受数据丢失风险三、三种主流灾备架构(说人话版)我们直接上干货。 四、RTO/RPO如何落地?不是喊口号很多人PPT写得很好,但系统一挂,全线崩。为什么?
关于RTO和RPO 谈完容灾级别的选择,我们来看下容灾的参数指标,有两个关键指标我们必须要了解:RTO和RPO。 RTO和RPO是灾难恢复方面的重要参数指标,可以很好地反映出容灾性能如何。 提升RTO的常用技术有:磁带恢复、人工迁移、应用系统远程切换,这几种技术的RTO的表现如下表所示: QQ截图20181225161817.png RPO(恢复点目标) RPO(RecoveryPointObjective RPO取决于数据恢复到怎样的更新程度,这种更新程度可以是上一周的备份数据,也可以是昨天的数据,这和数据备份的频率有关。为了改进RPO,必然要增加数据备份的频率才行。 RPO是反映恢复数据完整性的指标。 在同步数据复制方式下,RPO等于数据传输时延的时间,在异步数据复制方式下,RPO基本为异步传输数据排队的时间。 提升RPO的常用技术有:磁带备份、定期数据复制、异步数据复制、同步数据复制等,这几种技术的RPO的表现如下表所示: QQ截图20181225162709.png RTO和RPO关系 RTO和RPO指标并不是孤立的
=0、地域级故障RPO分钟级,支撑金融、传媒等行业客户数智化转型。 ≈0/RPO=0要求迫切。 •解决方案: 部署模式:双AZ(基础互备)、双AZ+仲裁(RTO≈0,仲裁区ZK/etcd热备)、三AZ(单AZ故障存活节点>半数,RTO≈0/RPO=0)、双Region(异地异步容灾,RPO分钟级 量化成果:某国有大型保险集团案例RTO压缩至2分钟级别,核心数据零丢失(RPO=0);三AZ部署单AZ故障业务无中断(数据副本跨AZ分布)。 •实战成果:服务某国有大型保险集团(双Region南北部署,GTM智能调度降时延)、某头部农商银行(双活AZ+仲裁区,RTO≈0/RPO=0),凭借金融级高可用能力为数智化转型提供坚实基座。
明确恢复点目标(RPO)恢复点目标(RPO)定义了可以接受的最大数据丢失量。根据 RPO 确定备份频率:RPO = 24 小时:每天备份一次。RPO = 1 小时:每小时备份一次。 RPO = 实时:使用实时同步或持续数据保护(CDP)。示例:如果您的业务要求 RPO 为 4 小时,则需要每 4 小时执行一次备份。2. 实时同步(适用于高频率需求)对于 RPO 要求极高的场景,可以使用实时同步工具(如 rsync 的守护进程模式或专用工具)。
recovery time objective ,RPO 是衡量最大丢失数据库承受力的一个维度,他帮助你来衡量,在两次备份之间,灾难发生中你没有数据库备份中遭受到的损失的问题,这主要是针对你的业务来说的 RPO衡量由于灾难您可以承受多少数据丢失。 举例,你每天备份数据是在午夜进行的,灾难发生在早上8点,换句话你丢掉的是8小时夜间的数据,如果你的RPO 设定的是24小时或更长,那么丢了8小时的数据库也是OK,但是如果你的RPO 是4个小时,那么你就的考虑一下了 然而,如果在磁盘界别另一个方案是针对存储管理中对磁盘进行快照的方式,这样会更快,尤其在你有一个非常大的数据库的情况下 (2T) 如何让RPO 和 RTO 达标 现在我们已经明白了RPO 和 RTO 对于我们的商业系统的重要性 这里帮助我们来定义RTO 和RPO ,发现正确的基于backup, standby, DR 策略的正确解决方案,并且进行测试确认和最终的部署。
核心系统(如医疗HIS、制造业MES)往往要求RPO(恢复点目标)趋近于零、RTO(恢复时间目标)分钟级,以确保业务连续性;而辅助系统(如OA、邮件)则可容忍小时级的数据恢复。 云原生设计:无缝适配混合云环境针对企业上云趋势,万能备份一体机深度集成多云接口与Kubernetes编排能力,提供三大云场景支持:云间迁移:一键完成AWS、阿里云、私有云之间的数据迁移,RPO 医疗行业:生命数据零丢失的守护者某三甲医院部署万能备份一体机后,构建了分级保护体系:HIS系统:通过实时复制+双活容灾,RPO=0、RTO<2分钟,保障挂号、处方核心业务连续性。
MySQL Group Replication可以用于如下场景: 一致性:数据零丢失(RPO=0) 主要成员故障时,数据不会丢失。 防止网络分区,通过大多数在线原则防止网络分区。 不同业务需求对应的架构 单一地域 RTO=小时 RPO=分 一台MySQL服务器 备份 同步日志 ? 单一地域 RTO=小时 RPO=少于1秒 一台MySQL服务器 频繁备份 持续拉取二进制日志 ? 单一地域 RTO=数分 RPO=少于1秒 MySQL InnoDB Replica Set ? 单一地域 RTO=数秒 RPO=0 MySQL InnoDB Cluster ? 多地域 地域故障 RTO=数分 RPO=数秒 MySQL InnoDB Cluster 配合使用异步复制 ?
企业的恢复点目标(RPO)是可以从备份恢复数据的最宽时间范围。设置此范围会影响内容备份的频率,并确定恢复某些项目的能力。 良好沟通的恢复点目标(RPO)允许企业进行备份,并清晰了解可恢复的信息,帮助企业应对无法满足的请求。 与恢复点目标(RPO)配对时,企业恢复时间目标(RTO)会影响内容的特定服务级别协议。 这个紧凑的窗口可能与企业的恢复点目标(RPO)不匹配,需要其他备份选项。 微软公司恢复内容的时间为48小时,这对于企业来说可能是一个可接受的服务等级协议(SLA)。 此外,自从上次恢复点目标(RPO)以来所做的更改将丢失,从而导致恢复操作的进一步延迟。而如果没有备份计划,它们可能会给企业和用户带来沉重的负担。
核心数据通常异步复制(RPO可控但≠0),RTO较高。 同城双活 + 异地灾备:结合双AZ/三AZ(同城RTO≈0,RPO=0)和双Region(异地容灾)。提供最全面的容灾能力。 多个副本成功写入才返回,强一致(RPO=0)。 TDMQ-Kafka/RocketMQ:主从复制(跨AZ),Leader写入成功后从节点异步追赶,最终一致(RPO≠0)。性能更高。 重点突出双AZ+仲裁区、三AZ在整AZ故障下的快速、自动恢复能力(RTO分钟级至秒级,RPO=0)相比传统技术的优势。 也讨论了跨地域切换的挑战和方案(RTO较高,RPO≠0)。 证明了其可用性(6个9)、数据可靠性(RPO=0)和快速恢复能力(分钟/秒级RTO)。 数据可靠性 (高RPO):核心数据通过跨AZ强一致复制实现RPO=0,确保无数据丢失。通过跨地域异步备份作为兜底。