当前位置: 首页 > news >正文

Web缓存利用分析(三)

导语:前一篇文章介绍了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攻击绕过方式,对于之后的测试或者做题中具有一定指导意义。

相关文章:

Web缓存利用分析(三)

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

Git合并冲突的根本原因和解决方法

假如您现在正在参与一个团队项目,并取得了实质性的进展。然而,当你准备提交代码的时候,发现团队中的某个人也更改了同一个文件,并且先你一步提交了——您现在遇到了代码冲突问题。而且需要花时间去解决自己的更改与别人的更改之间…...

从C语言到C++⑨(第三章_CC++内存管理)详解new和delete+面试题笔试题

目录 1. C语言动态内存管理 1.1 C/C内存分布 1.2 C语言中动态内存管理的方式 2. C动态内存管理方式 2.1 new/delete操作内置类型 2.2 初始化new数组的问题 2.3 new 和 delete 操作自定义类型 3. operator new与operator delete函数详解 3.1 operator new与operator de…...

阿里云服务器安装宝塔Linux面板教程图解

使用阿里云服务器安装宝塔面板教程,阿里云服务器网以CentOS操作系统为例,安装宝塔Linux面板,先远程连接到云服务器,然后执行宝塔面板安装命令,系统会自动安装宝塔面板,安装完成后会返回面板地址、账号和密码…...

ORA-01555 ORA-22924 快照过旧问题处理

ORA-01555 ORA-22924 快照过旧问题处理 问题描述 使用数据泵导出数据,或在业务功能查询某个表时,可能出现 ORA-01555 ORA-22924 快照过旧的错误: ORA-01555: snapshot too old: rollback segment number with name "" too small…...

Win11系统更新后网络速度变的很慢怎么办?

Win11系统更新后网络速度变的很慢怎么办?有用户将自己的电脑系统升级到了Win11之后,出现了一些问题。电脑在使用中出现了网络速度变慢的情况。而且其它的设备在连接网络后速度是正常的,那么这个问题要怎么解决?来看看以下的方法分…...

了解 XML结构(一)

文章目录 1 XML定义2 了解XML结构3 XML节点类型4 加载读取XML5 小结 1 XML定义 XML是一种可扩展标记语言(Extensible Markup Language, XML),可以用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 …...

Vue简单语法记录

指令 v-show:展示和隐藏 如图片的展示和隐藏 (底层是其实已经创建了 加了个css属性,display none)v-if:创建和删除 创建和删除,删除就真的没了v-for: 遍历指令 v-for"item in list&…...

matplotlib的安装和使用教程:中文字体及语言参数设置

matplotlib是一个常用的数据可视化库,广泛应用于科学研究、工程设计、金融分析等领域。由于其强大的功能和易用性,matplotlib已经成为了广大科研工作者和数据分析师的必备工具之一。本文将重点介绍matplotlib的安装和允许中文及几种字体的方法。 一、mat…...

mysql深分页

第一种:主键自增id情况: 未改: select * from wx_product_category_info where category_name_cn#{categoryNameCn} and category_type#{categoryType} order by id asclimit #{pageNum}, #{pageSize};在普通的limit条件下,如果…...

【JavaScript由浅入深】常用的正则表达式

【JavaScript由浅入深】常用的正则表达式 文章目录 【JavaScript由浅入深】常用的正则表达式写在前面一、认识正则表达式1.1 正则表达式的概念 二、正则表达式的使用2.1 使用构造函数创建正则表达式2.2 使用字面量创建正则表达式2.3 补充 三、正则表达式常见规则3.1 字符类3.2 …...

QT常用类型字节数组QByteArray及其基本使用

目录 概述特点常见函数QByteArray::append:QByteArray::insert:QByteArray::replace:QByteArray::remove:QByteArray::toHex:QByteArray::fromHex:QByteArray::toBase64:QByteArray::fromBase64…...

APP 兼容性测试是什么?8年测试老鸟告诉你

1、APP 兼容性测试认识 随着 APP 应用范围越来越广,用户群体越来越大,终端设备的型号也越来越多,移动终端碎片化加剧,使得 APP 兼容性测试成为测试质量保障必须要考虑的环节。 APP 兼容性测试通常会考虑:操作系统、厂…...

Golang每日一练(leetDay0061) 表列序号、阶乘后的零

目录 171. Excel 表列序号 Excel Sheet Column Number 🌟 172. 阶乘后的零 Factorial Trailing Zeroes 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练…...

深度解析C++异常处理机制:最佳实践、性能分析和挑战

C 基础知识 八 异常处理 下篇 一、异常处理实践1 编写高质量代码中的异常处理1.1 只在必要时才使用异常1.2 尽量减小异常的范围1.3 不要隐藏异常1.4 不要在析构函数中抛出异常1.5 使用 RAII 技术来管理资源 2 维护异常类2.1 按照异常类型的功能来定义异常类2.2 继承现有的异常类…...

【Spring事务】Spring事务事件控制,解决业务异步操作

使用背景 在业务中,经常会有这样的需求,在数据库事务提交之后,发送异步消息或者进行其他的事务操作。 例如当用户注册成功之后,发送激活码,如果用户注册后就执行发送激活码,但是在用户保存时出现提交事务…...

Java 中的注释有哪些?

在 Java 中,有三种注释方式:单行注释、多行注释和文档注释。注释是程序中的一种重要的辅助性说明文字,可以增加程序的可读性和可维护性,方便其他程序员阅读和理解代码。 单行注释 单行注释是指以“//”开头的注释,注释…...

yolov4

1 V4版本概述 集各种优秀方案于一身,嫁接了众多主流的目标识别方面的情况。 V4 贡献 3. 数据增强策略分析 BOF Bag of freebies(BOF) Mosiac 数据增强 Mixup 比如将狗和猫的两张图片混合,一半猫,一半狗。 label 也变成 Dog 0.5 , Cat 0…...

金融学第二版笔记第一章1.1

第1部分 金融和金融体系 第一章金融学 1.1 一、 对金融学进行界定 1.金融 金融是货币流通、信用活动及与之相关的经济行为的总称。 简言之,就是货币资金的融通。一般是指以银行、证券市场等为中心的货币流通和信用调节活动,包括货币的发行和流通、存…...

[架构之路-193]-《软考-系统分析师》-2-应用数学 - 项目周期与关键路径(PERT图、甘特图、单代号网络图、双代号网络图)

1. 关键概念 1.1 关键路径 关键路径通常(但并非总是)是决定项目工期的进度活动序列。它是项目中最长的路径,即使很小浮动也可能直接影响整个项目的最早完成时间。关键路径的工期决定了整个项目的工期,任何关键路径上的终端元素…...

数据链路层的主要功能是什么

数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...