Web缓存利用分析(三)

news/2024/11/28 22:39:15/

导语:前一篇文章介绍了Server Cache Poisoning在实际应用场景下,产生DOS攻击的利用方式。本篇文章则介绍Web Cache Deception在真实场景下的应用方式和测试情况。

前言

前一篇文章介绍了Server Cache Poisoning在实际应用场景下,产生DOS攻击的利用方式。本篇文章则介绍Web Cache Deception在真实场景下的应用方式和测试情况。

本篇文章介绍的是发表在网络安全顶会2020 USENIX Security上的一篇文章:《Cached and Confused: Web Cache Deception in the Wild 》。

背景知识

我们已经在之前的文章中介绍过Web Cache欺骗的问题,其在CTF场景下有比较多的应用,而本篇文章主要聚焦于其在真实世界场景下的利用与一些bypass方式。关于其简单原理的一些CTF应用,可以参见我们的第一篇文章:
在这里插入图片描述
如上图所示,攻击者诱导受害者点击如下路由:

/account.php/nonexistent.jpg

由于是第一次访问,Web Cache将其转发给源服务器,源服务器在解析时,由于中间件或者后端配置问题,将其解析为访问/account.php路由,并进行response,而此时Web Cache将其对应记录。当攻击者再次请求如下链接:

/account.php/nonexistent.jpg

那么将会得到受害者account.php页面的内容,从而导致信息泄露,达成攻击。

工具设计

对于这样一个问题,本文作者设计了一套工具,并测试其在真实世界下的效果如何:
在这里插入图片描述
首先作者表明,利用该攻击的场景为:网站有一些私有信息,只能由用户访问,但因为Web Cache欺骗,致使其他用户可以访问到这些数据。这就是一次WCD(Web Cache Deception)攻击。

首先作者进行了网站搜集,其建立一个种子池,然后使用启发式工具,发现池中网站的子域名,以此扩充数据集。然后对每个网站进行账户创建,此时分别创立2个用户:攻击者用户与受害者用户。此举旨在后期利用攻击者用户获取受害者用户数据。同时还会使用爬虫搜集攻击者与受害者的cookies信息,以判断WCD攻击是否需要依赖于Cookies。

值得注意的是,在搜集网站的时候,由于是利用种子池中的域名,进行启发式搜集,那么可能会存在如下情况,即爬虫可能遇到大量相似的url:

http://example.com/?lang=en
http://example.com/?lang=fr
http://example.com/?lang=cn

亦或是如下:

http://example.com/028
http://example.com/142
http://example.com/359

这样的遍历和循环非常的浪费时间,于是作者设置了上限,诸如此类的url,每个域名只随机挑选500个。

在上述准备工作完毕后,则使用工具以此测试每个url是否存在WCD攻击隐患。攻击做法如下:

1.对于指定url:

http://example.com/028

首先在其路径后拼接随机数.css文件:

http://example.com/028/.css

  1. 使用受害者账户点击上述网址

  2. 使用攻击者账户点击上述网址,并记录回显

  3. 再次点击上述网址,但此时不带任何cookie,并记录回显

然后对搜集到的response进行提取,查看里面是否有受害者账户的关键信息,同时判断response中是否带出安全相关属性,例如 : csrf、xsrf、token、state、client-id

实验评估

作者首先在Alexa Top 5K网站中,选取了295个支持Google OAuth的网站,选取分布如下:
在这里插入图片描述
然后将其作为种子池,进行爬取并测试,结果发现如下:
在这里插入图片描述
在1470410个网页中,有17293个页面存在WCD攻击,同时发现对于使用Cloudflare和Akamai CDN的网站可能更容易受到威胁:
在这里插入图片描述
同时在受到WCD的网页中,其可以泄露的私密数据分布如下:
在这里插入图片描述
可以看到不仅用户名泄露较为严重,Sess ID、Auth Code等安全相关的信息泄露也存在一定比例。

并且通过对照观察,在使用cookie和不使用cookie时,攻击结果一致,这也说明WCD攻击不依赖于授权用户或带有cookie的访问者。这进一步提升了该攻击的危害性,降低了其攻击成本。

同时,作者还提出了相应的bypass方式,其发现不仅诸如如下请求方式可以进行WCD攻击:

/account.php/nonexistent.jpg

使用其他一些手段也可以达成相应的目的:

/account.php%0Anonexistent.jpg /account.php%3Bnonexistent.jpg
/account.php%23nonexistent.jpg
/account.php%3Fnonexistent.jpg

同时作者进一步加大了数据集,用于测试新的payload方式,同时发现其分布如下:
在这里插入图片描述
可见这些bypass方式可以有效的进行WCD攻击。

同时这些攻击也可以并存,例如既可以使用%0A进行WCD攻击,也可以使用%3F进行WCD攻击:
在这里插入图片描述

总结

本篇文章作者分析探索了真实世界中WCD攻击的应用和分布比例,同时提出了一些新型的WCD攻击绕过方式,对于之后的测试或者做题中具有一定指导意义。


http://www.ppmy.cn/news/62808.html

相关文章

12-Vue技术栈之Vuex的使用

目录 1、理解 vue1.1 vuex 是什么1.2 什么时候使用 Vue1.3 图解两种方式实现数据共享 2、搭建vuex环境2.1 下载vuex2.2 配置文件 3、基本使用3.1 求和案例纯vue写法3.2 求和案例vuex写法 4、getters的使用5、四个map方法的使用5.1 求和案例 6、 模块化命名空间6.1求和案例改造 …

LeetCode:21. 合并两个有序链表

21. 合并两个有序链表 1)题目2)思路3)代码4)结果 1)题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2…

Spring Boot 3.x 系列【31】集成邮件发送

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot版本3.0.5 源码地址:https://gitee.com/pearl-organization/study-spring-boot3 文章目录 1. 前言2. 协议2.1 SMTP2.2 POP32.3 IMAP3. 邮件服务器4. 案例演示4.1 SMTP 服务器4.2 集成4.3 测试1. 前言 电子邮件是一…

Vue3学习笔记(尚硅谷)

文章目录 一、创建vue3工程1-1、使用vite创建vue3项目1-1、安装开发者工具 二、常用Composition API2-1、setup2-2、ref函数2-3、reactive函数2-4、Vue3的响应式原理2-4-1.Vue2的响应式原理2-4-3.Vue3的响应式原理 2-5、reactive对比ref2-6、setup的两个注意点2-7、计算属性与监…

asp.net+sqlserver漫画绘本借阅管理系统

摘 要1 第1章 系统概述5 1.1 研究背景5 1.2 研究的意义5 1.3 主要研究内容5 第2章 系统开发环境7 2.1 ASP.NET概述7 2.2 动态网站技术介绍8 2.3 数据库技术8 第3章 需求分析9 3.1 需求分析9 3.1.1 功能需求9 3.2 可行性分析9 3.2.1 可行性分析9 3.2.2 技术可行性9 3.2.3 运行可…

2023全栈开发人员职业路线图

0. 全栈开发人员职业路线图 全栈开发人员是IT行业中薪资最高的职业之一。 如果您想成为一名全栈开发人员,以下是2023年全栈开发人员路线图上的十一个步骤: 掌握敏捷开发和Scrum学习浏览器技术,如HTML和CSS熟练掌握JavaScript或TypeScript了…

Linux权限划分的原则

考察的不仅是一个具体的指令,还考察对技术层面的认知。 如果对 Linux 权限有较深的认知和理解,那么完全可以通过查资料去完成具体指令的执行。更重要的是,认知清晰的程序员可以把 Linux 权限管理的知识迁移到其他的系统设计中。 权限抽象 一…

真实业务场景使用-模板模式+策略模式组合

模板和策略设计模式一般是使用最频繁的设计模式,模板的场景主要是处理一系列相同的流程,将这些流程放到模板里,每个流程里的处理可能有一些不一样的地方,则可以抽象出一个方法,由每一个有实际意义的子类实现。 策略模…