PortSwigger WEB缓存欺骗

一、Web缓存概述

         Web 缓存是位于源服务器和用户之间的系统。当客户端请求静态资源时,请求首先被定向到缓存。如果缓存不包含资源的副本(称为缓存未命中),则请求将转发到源服务器,该服务器将处理并响应请求。然后,响应将发送到缓存,然后再发送给用户。缓存使用一组预配置的规则来确定是否存储响应。

         当将来对同一静态资源发出请求时,缓存会将存储的响应副本直接提供给用户(称为缓存命中)

二、利用路径映射进行 Web 缓存欺骗

        原理:缓存服务器和源服务器对于路径处理差异导致该问题。

        利用思路:由于源服务器会对资源路径进行抽象,利用缓存服务器匹配规则,致使缓存服务器误将构造的恶意路径缓存住

1、寻找不严谨的源服务器资源路径

        找到敏感路径进行测试,将路径后面加上容易被缓存服务器缓存住的资源如:11.js、11.css等。 查看源服务器是否会将修改后的路径抽象成正常的路径进行相应。

        如图所示可以被相应并且能被缓存服务器缓存:

2、 构造而已请求,发送给受攻击者,诱使点击

        攻击请求页面如下:

<script>document.location="https://YOUR-LAB-ID.web-security-academy.net/my-account/wc2d.js"</script>

        访问构造的url页面,通过缓存服务器 成功获取到API key 如图:

三、利用路径分隔符进行 Web 缓存欺骗

        原理:利用缓存和源服务器将字符解释为分隔符的方式的差异进行利用

        本题解决思路:由于缓存和源服务器将字符解释为分隔符的方式存在差异,当以/exp?1.js、/exp;1/js访问资源的时候,源服务器会将分隔符后面的解释为参数,而缓存服务器则不做处理,最终根据缓存规则将exp?1.js、/exp;1.js 作为一个完整的资源进行了缓存。最终可能通过xss漏洞被恶意缓存利用

1、使用暴力破解对可能的分隔符进行暴力破解,寻找差异

         通过intruder发现,当分隔符为”;“、” ?“ 时,返回正常数据,且可以被缓存服务器缓存(分隔符列表见文末附件)

2、构造而已请求,发送给受攻击者,诱使点击

        攻击请求页面如下:

<script>document.location="https://YOUR-LAB-ID.web-security-academy.net/my-account/wc2d.js"</script>

        访问构造的url页面,通过缓存服务器成功获取到API key 如图:

四、利用源站规范化进行 Web 缓存欺骗 

        原理:当缓存服务器对所有静态资源进行缓存,且源服务器进行规范化 URL 路径时将会导致该漏洞

本题解决思路:

        寻找静态资源,确定网站对静态资源目录进行了缓存处理,利用源服务器的规范化路径,通过../../的方式跳到目标路径上,由于缓存服务器不做规范化,当匹配到了前面的静态后不会对../../进行解析,最终导致资源被缓存服务器成功缓存

1、测试网站静态文件资源目录

寻找静态资源目录

        通过测试缓存服务器会对resources路径下的文件进行缓存,如图

2、测试通过URL路径跳转将目标资源与静态目录进行拼接

        能够被缓存住,如图所示:

3、构造而已请求,发送给受攻击者,诱使点击

<script>document.location="https://0a4800400437e67e80e830e100d800b4.web-security-academy.net/resources/../my-account"</script>

        需要对于/进行url编码 %2f  攻击请求页面如下:

        访问构造的url页面,通过缓存服务器成功获取到API key 如图:

五、利用缓存服务器规范化进行 Web 缓存欺骗

        原理:当缓存服务器对静态资源进行缓存,缓存服务器未将字符解释为分隔符源服务器将字符解释为分隔符,缓存服务器进行规范化源服务器未进行规范化处理

本题解决思路:

        寻找静态资源,确定网站对静态资源目录或者单个静态文件进行了缓存处理,确定分隔符对于源和缓存服务器的影响,确认规范化对于源和缓存服务器的影响。如果条件均满足该漏洞成立,进行恶意请求的构造

1、查找网站静态文件资源目录

2、缓存服务器未将字符解释为分隔符源服务器将字符解释为分隔符

        通过暴力破解确认存在分隔符对响应无影响,可以确认源服务器将字符解释为分隔符,如图:

        判断缓存服务器未将字符解释为分隔符

        首先将静态资源缓存住,通过分隔符测试不同参数查看是否缓存住了,未缓存住,说明未将字符解释为分隔符,如图:

3、确认缓存服务器进行规范化源服务器进行规范化处理

        测试路径跳转,响应异常。确认源服务器未进行规范化处理,如图:

        确认缓存服务器进行规范化处理

先将静态缓存中

        修改url 查看缓存服务器是否进行了url规范化,能够缓存中,说明缓存服务器进行了规范化处理,如图所示:

 4、构造而已请求,发送给受攻击者,诱使点击

<script>document.location="https://0a4800400437e67e80e830e100d800b4.web-security-academy.net/my-account;/..%2fresources"</script>

六、防止 Web 缓存欺骗漏洞

  • 始终使用标头来标记动态资源
  • 配置 CDN 设置,以便缓存规则不会覆盖标头。
  • 激活 CDN 针对 Web 缓存欺骗攻击的任何保护。
  • 验证源服务器和缓存解释 URL 路径的方式之间是否没有任何差异。

附件:分隔符列表

!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
:
;
<
=
>
?
@
[
\
]
^
_
`
{
|
}
~
%21
%22
%23
%24
%25
%26
%27
%28
%29
%2A
%2B
%2C
%2D
%2E
%2F
%3A
%3B
%3C
%3D
%3E
%3F
%40
%5B
%5C
%5D
%5E
%5F
%60
%7B
%7C
%7D
%7E

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nginx源码安装配置ssl域名

nginx源码安装 下载 wget http://nginx.org/download/nginx-1.24.0.tar.gz 解压 tar -zxvf nginx-1.24.0.tar.gz 下载openssl apt install openssl 安装nginx cd nginx-1.24.0 sudo apt-get install libpcre3 libpcre3-dev ./configure --prefix=/home/nginx24 --with-http_ss…

如何用WordPress和Shopify提升SEO表现?

选择合适的建站程序对于SEO优化非常重要。目前&#xff0c;WordPress和Shopify是两种备受推崇的建站平台&#xff0c;各有优势。 WordPress最大的优点是灵活性。它支持大量SEO插件&#xff0c;帮助你调整元标签、生成站点地图、优化内容结构等。这些功能让你能够轻松地提升网站…

RHCE的学习(20)

变量5种赋值方式 shell中变量赋值5种方式&#xff0c;其中采用name10的方法称A 直接赋值 nameB read命令 read v1C 使用命令行参数 &#xff08;$1 $2 $3 ..&#xff09; name$1D 使用命令的输入 username$(whoami)E 从文件读取 #cut -d : -f1 /etc/passwd > /user.listfor…

llama factory lora 微调 qwen2.5 7B Instruct模型

项目背景 甲方提供一台三卡4080显卡 需要进行qwen2.5 7b Instruct模型进行微调。以下为整体设计。 要使用 LLaMA-Factory 对 Qwen2.5 7B Instruct模型 进行 LoRA&#xff08;Low-Rank Adapters&#xff09;微调&#xff0c;流程与之前提到的 Qwen2 7B Instruct 模型类似。LoRA …

Python酷库之旅-第三方库Pandas(221)

目录 一、用法精讲 1036、pandas.DatetimeIndex.to_pydatetime方法 1036-1、语法 1036-2、参数 1036-3、功能 1036-4、返回值 1036-5、说明 1036-6、用法 1036-6-1、数据准备 1036-6-2、代码示例 1036-6-3、结果输出 1037、pandas.DatetimeIndex.to_series方法 10…

108. UE5 GAS RPG 实现地图名称更新和加载关卡

在这一篇里&#xff0c;我们将实现对存档的删除功能&#xff0c;在删除时会有弹框确认。接着实现获取玩家的等级和地图名称和存档位置&#xff0c;我们可以通过存档进入游戏&#xff0c;玩家在游戏中可以在存档点存储存档。 实现删除存档 删除存档需要一个弹框确认&#xff0…

后台管理系统(开箱即用)

很久没有更新博客了&#xff0c;给大家带上一波福利吧,大佬勿扰 现在市面上流行的后台管理模板很多,若依,芋道等,可是这些框架对我们来说可能会有点重,所以我自己从0到1写了一个后台管理模板,你们使用时候可扩展性也会更高 项目主要功能: 成员管理&#xff0c;部门管理&#…

【ubuntu】Geogebra

Geogebra 几何作图工具 是一款跨平台的几何作图工具软件&#xff0c; 目前已经覆盖了&#xff0c; windows&#xff0c;android&#xff0c; mac, linux 等操作系统。 Ubuntu 现状 Ubuntu 自带应用市场 Ubuntu 自带应用市场目前只有 Geogebra 4.0 版本&#xff0c; 不能画立…

MySQL--数据库基础

1. 数据库简介 1.1什么是数据库&#xff1f; 简单来说就是组织和保存数据的应用程序。 数据库是20世纪60年代末发展起来的⼀项重要技术&#xff0c;已经成为计算机科学与技术的⼀个重要分⽀。数据库技术主要是⽤来解决数据处理的⾮数值计算问题&#xff0c;数据处理的主要内容…

《生成式 AI》课程 第3講 CODE TASK 任务2:角色扮演的机器人

课程 《生成式 AI》课程 第3講&#xff1a;訓練不了人工智慧嗎&#xff1f;你可以訓練你自己-CSDN博客 我们希望你设计一个机器人服务&#xff0c;你可以用LM玩角色扮演游戏。 与LM进行多轮对话 提示:告诉聊天机器人扮演任意角色。 后续输入:与聊天机器人交互。 Part 2: Role…

SpringCloud篇(配置中心 - Nacos)

目录 一、Nacos 配置中心 1. 统一配置管理 1.1. 在nacos中添加配置文件 1.2. 从微服务拉取配置 1.2.1. 引入nacos-config依赖 1.2.2. 添加bootstrap.yaml 1.2.3. 读取nacos配置 1.2.4. 页面访问 2. 配置热更新&#xff1a;两种 2.1. 方式一 2.2. 方式二 3. 配置共享…

Docker 基础命令介绍和常见报错解决

介绍一些 docker 可能用到的基础命令&#xff0c;并解决三个常见报错&#xff1a; 权限被拒绝&#xff08;Permission Denied&#xff09;无法连接到 Docker 仓库&#xff08;Timeout Exceeded&#xff09;磁盘空间不足&#xff08;No Space Left on Device&#xff09; 命令以…

js识别二维码

需要下载的js文件&#xff1a;https://download.csdn.net/download/impossible1994727/90001718https://download.csdn.net/download/impossible1994727/90001718 或者直接复制也行&#xff1a; var _aa {}; _aa._ab function (f, e) { var d qrcode.width; var b qrcode…

Uniapp踩坑input自动获取焦点ref动态获取实例不可用

前言 大家好我是没钱的君子下流坯&#xff0c;用自己的话解释自己的知识。很久很更新了&#xff0c;这几个月一直在加班&#xff0c;今天记录一个uniapp关于input中focus()方法自动获取焦点的坑。 案例 为了实现一个手机验证码的页面&#xff0c;验证码是五个输入框&#xf…

GA/T1400视图库平台EasyCVR视频融合平台HLS视频协议是什么?

在数字化时代&#xff0c;视频监控系统已成为保障安全、提升效率的关键技术。EasyCVR视频融合云平台&#xff0c;作为TSINGSEE青犀视频在“云边端”架构体系中的重要一环&#xff0c;专为大中型项目设计&#xff0c;提供了一个跨区域、网络化的视频监控综合管理系统平台。它不仅…

文献解读-DNAscope: High accuracy small variant calling using machine learning

关键词&#xff1a;基准与方法研究&#xff1b;基因测序&#xff1b;变异检测&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;DNAscope: High accuracy small variant calling using machine learning标题&#xff08;中文&#xff09;&#xff1a;DNAsc…

每日一博 - Java的Shallow Copy和Deep Copy

文章目录 概述创建对象的5种方式1. 通过new关键字2. 通过Class类的newInstance()方法3. 通过Constructor类的newInstance方法4. 利用Clone方法5. 反序列化 Clone方法基本类型和引用类型浅拷贝深拷贝如何实现深拷贝1. 让每个引用类型属性内部都重写clone()方法2. 利用序列化 概述…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-25

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…

Odoo :一款免费开源的日化行业ERP管理系统

文 / 开源智造Odoo亚太金牌服务 概述 构建以 IPD 体系作为核心的产品创新研发管控体系&#xff0c;增进企业跨部门业务协同的效率&#xff0c;支撑研发管控、智慧供应链、智能制造以及全渠道营销等行业的场景化&#xff0c;构筑行业的研产供销财一体化管理平台。 行业的最新…

【Golang】——Gin 框架中间件详解:从基础到实战

中间件是 Web 应用开发中常见的功能模块&#xff0c;Gin 框架支持自定义和使用内置的中间件&#xff0c;让你在请求到达路由处理函数前进行一系列预处理操作。这篇博客将涵盖中间件的概念、内置中间件的用法、如何编写自定义中间件&#xff0c;以及在实际应用中的一些最佳实践。…