【前端安全】web缓存投毒
核心概念
缓存
web缓存位于用户和应用程序服务器之间,用于保存和提供某些响应的副本。在下图中,我们可以看到三个用户一个接一个地获取相同的资源:
缓存技术旨在通过减少延迟来提升页面加载速度,还可以减少应用程序服务器上的负载,同时达到防止Dos攻击的目的。
缓存键
缓存的概念可能听起来简单明了,但它隐藏了一些风险的假设。
每当缓存服务收到对资源的请求时,它需要确定:
- 是否已保存此指定资源的副本
- 是否可以使用该副本进行响应
- 是否需转发给应用程序服务器
确定两个请求是否正在尝试加载相同的资源可能是很棘手的问题;
对请求进行逐字节匹配的做法是完全无效的,因为HTTP请求充满了无关紧要的数据。
缓存使用缓存键的概念解决了这个问题 —— 使用一些特定的要素用于完全标识锁请求的资源。
缓存系统认为以下两个请求是等效的,并且很乐意将第一个请求缓存的响应来响应第二个请求:
GET /blog/post.php?mobile=1 HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 … Firefox/57.0
Cookie: language=pl;
Connection: close
GET /blog/post.php?mobile=1 HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 … Firefox/57.0
Cookie: language=en;
Connection: close
因此,该页面将以错误的语言输出提供给第二位访问者。
这揭示了一个问题:由非缓存键导致的差异化响应都能够被缓存并提供给其他用户。
缓存投毒
web缓存投毒的目的是发送导致有害响应的请求,将该响应保存在缓存服务中并提供给其他用户。
请注意,web缓存服务中还存在一种被称为 web缓存欺骗 的不同类型的攻击,不要和 缓存投毒 混淆了。
浏览器缓存投毒
浏览器一般缓存静态资源,那么攻击者的攻击目标也就是诸如JS、Css这类静态资源了。
比较容易发现的浏览器缓存投毒的表现是影响了页面的正常展示,但往往造成更大危害的可能属于不影响页面展示的缓存投毒,用于窃取一些用户信息等。
服务器缓存投毒
服务器会缓存某个链接的第一个访问者的response内容。
如果第一个人是攻击者,就很有可能让CDN错误的缓存污染内容,达成攻击。
请看如下请求:
我们发现response页面中会拼接 X-Forwarded-Host,
那么假设我们是第一个请求者,此response将会被缓存,当下一个请求者访问时:
很明显,将会受到xss攻击。但是此类攻击有一个前提:
即攻击者需要是第一个请求页面的人,那么如何做到这一点?
攻击者可以利用response里的Age和max-age,以此计算投毒时机。
Age代表当前response时间,max-age代表该页面缓存何时过期
那么如何保护网站免受此类攻击呢?
这就要和我们之前提到的cache key有关了,如下:
如果我们利用Vary指定cache key为User-Agent,那么当两个访问者的请求域名、url、User-Agent都相同时,才命中同一块cache返回。
【前端安全】web缓存投毒相关推荐
- stm32 web get 参数_BlackHat2020议题之Web缓存投毒
周末闲着没事就来学习下新的思路,文章很长,花了一天时间才码出来,所以,你懂我意思吧? 对了,周末打算出去走走,所以就不更文了 本文将会介绍Web缓存投毒的各种骚姿势以及利用链,并会搭配相应案例进行讲解 ...
- 研究员发现70个web缓存投毒漏洞,获奖4万美元
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 虽然web 缓存投毒漏洞为人熟知,但仍然会突然出现在网络.安全研究员 Iustin Ladunca (Youstin) 对很多网站展开大规模研究 ...
- BlackHat2020议题之Web缓存投毒
周末闲着没事就来学习下新的思路吧 本文将会介绍Web缓存投毒的各种骚姿势以及利用链,并会搭配相应案例进行讲解,看完你一定会有收获的.Have Fun! Web缓存投毒基础 Web缓存大家应该都有所了解 ...
- 作为前端应当了解的Web缓存知识
缓存优点 通常所说的Web缓存指的是可以自动保存常见http请求副本的http设备.对于前端开发者来说,浏览器充当了重要角色.除此外常见的还有各种各样的代理服务器也可以做缓存.当Web请求到达缓存时, ...
- web页面上数据是否进行缓存要怎么判断_前端要知道的网络知识五:详细的介绍web缓存...
Web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有"已缓存的"副本,就可以从本地存储设备而不是原始服务器中提取这个文档.本文将详细介绍缓存的相关 ...
- 前端缓存【web缓存】
前端缓存--http缓存 web缓存 http缓存 定义 优点 缺点 http缓存类型 强缓存 Expires实现的强缓存 Cache-control实现的强缓存 协商缓存 last-modified ...
- 技术点:前端缓存(web 缓存)详解
前端缓存(web 缓存)详解 什么是 web 缓存 web 缓存主要指的是两部分:浏览器缓存和 http 缓存 浏览器缓存: localStorage,sessionStorage,cookie 等等 ...
- 基于反向代理的Web缓存应用-可缓存的CMS系统设计
基于反向代理的Web缓存加速 --可缓存的CMS系统设计 作者: 车东 Email: chedongATbigfoot.com/chedongATchedong.com 写于:2003/05 ...
- Web缓存相关知识整理
一.前言 工作上遇到一个这样的需求,一个H5页面在APP端,如果勾选已读状态,则下次打开该链接,会跳过此页面.用到了HTML5 的本地存储 API 中的 localStorage作为解决方案,回顾了 ...
- 12年前的 Linux bug 复活,DNS 缓存投毒攻击重现
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 清华大学和加州大学组成的研究团队发现一种可发动 DNS 缓存投毒攻击的新方法.这种方法重新激活了本以为已完全修复的2008年现身的一个 ...
最新文章
- 如何选择容器注册表?这里给出九个选项
- [SDOI2010]外星千足虫 题解 高斯消元+bitset简介
- mysql存储过程时间_mysql时间操作函数和存储过程
- 数的直径(两次DFS)
- 在县城投资买一辆出租车,一个月能收入多少钱?
- 什么是“ rpcsvchost”,以及为什么它在Mac上运行?
- javafx css颜色_JavaFX技巧7:使用CSS颜色常量/派生颜色
- 如何配置x225/x235/x335/x345的LSI SCSI卡实现RAID-1功能
- 电子科大计算机学院毕业照,电子科大毕业照拍摄指南,请内部传阅!
- 大油井隐藏的箱子_房子买的小户型,4招变大不止一倍
- 和我一起构建私有物联网云平台
- java dom xml解析和windows dom解析的差别
- mysql dsec_MySql数据库操作命令
- python图形化监控系统界面_手把手教你实现一个可视化爬虫监控系统,酷炫的图形化界面...
- 进程间通信之管道与有名管道
- iframe 父页面与子页面之间的方法、属性的相互调用
- 2008r2服务器频繁自动重启,关于Windows server2008频繁重启问题
- 免费开源BI工具DataEase实现了SQL数据集动态传参?冲冲冲!!!
- typedef的使用详解
- Infoq专访:Maven中文用户组创始人许晓斌