如果网站的 Cookie 特别多特别大,会发生什么情况?
有没有想过,如果网站的 Cookie 特别多特别大,会发生什么情况?
不多说,马上来试验一下:
for (i = 0; i < 20; i++)document.cookie = i + '=' + 'X'.repeat(2000)
什么,网站居然报错了?
众所周知,Cookie 是塞在请求头里的。如果 Cookie 太多,显然整个 HTTP 头也会被撑大。
然而现实中,几乎所有的服务器都会对请求头长度做限制,避免畸形封包消耗服务器资源。
那么有趣的事就来了 —— Cookie 是可以长期储存的,所以只要不过期,对应的站点就一直无法访问!
为什么会这样!因为博客园是支持自定义装扮的,用户可以嵌入自己的脚本。于是,一旦执行了恶作剧脚本,站点 Cookie 被污染,导致整个网站都无法访问了!
# 进阶
根据这个原理,我们继续挖掘 Cookie 的相关属性,让攻击效果变得更好。
expires
Cookie 之所以能被持久储存,完全得益于 expires 这个过期值。
理论上,Cookie 的过期时间可以足够长。不过鉴于实际情况,最多也就几个月的时间。
但对于互联网来说,这也非常长了,谁能容忍一个网站几个月没法用?
所以,我们可以设置足够久的过期时间 —— 只要用户不主动清空 Cookie,相应的站点就一直没法访问!
domain
例如博客园,所有用户都在 www.cnblogs.com 下。除了这个主站,能否将其他的子站服务也一起破坏呢?
答案是可以!因为 Cookie 具有一个特殊的属性 domain,它允许子站设置上级站点的 Cookie。甚至可以是根域!
于是 www.cnblogs.com 的页面,就能写入超大 Cookie 到 cnblogs.com 域下了。
未来,只要用户访问 *.cnblogs.com 的资源,统统变成 400 了。
这个特征可被利用到 XSS 攻击上:
只要某网站任何一个子站能够运行跨站脚本,攻击者就可以对该网站进行全站屏蔽了!(GFW:比我还狠~)
path
不过太霸道也是不好的。尤其是这年头大家都懂些网络知识,清缓存这样简单的事,不少小白用户都会尝试下。
所以,为了低调起见,我们不对页面进行屏蔽,以免被过早被用户发现。
我们只屏蔽特殊的 URL,例如 AJAX 请求接口。这样,页面仍能正常打开,只是后期的一些操作总是提示失败 —— 于是,用户大多会认为是网站出问题了,而不会怀疑是自己的原因。
为了能更精确的控制 Cookie 粒度,path 属性得利用起来。例如,我们只污染博客园的 /mvc/vote/VoteComment.aspx 页面:
for (i = 0; i < 20; i++)document.cookie = i + '=' + 'X'.repeat(2000) + ';domain=cnblogs.com; path=/mvc/vote/VoteComment.aspx'
这样,页面仍能正常浏览,只是把『点赞』功能给屏蔽了:
是不是很有趣:)
这种局部屏蔽的效果,显然有更好的迷惑性。
协议
仔细回顾一遍 Cookie 属性,除了 secure,再没和 URL Scheme 相关的属性了。
这意味着,HTTP 和 HTTPS 的 Cookie 默认都是共享的。因此,我们可以在 HTTP 下屏蔽 HTTPS 站点了!
不过 XSS 也不是也想有就能有的,但在特殊的条件下,任何站点都可以有 XSS —— 那就是流量被劫持的时候。
当用户流量被劫持时,中间人可以模拟出任何 HTTP 站点,因此就能对任意站点设置 Cookie:
当用户打开任意 HTTP 页面时,往其中注入脚本。接着悄悄创建目标站点的隐藏框架页,中间人返回特定的页面内容,其中的脚本即可修改目标站点 Cookie 了。
下面就来尝试一下吧。
通过代理,我们模拟流量被劫持的场景。当打开任意页面时,开始对目标站点释放 DeBuff:
主页面的实现:
目标框架页实现:
通过一堆框架页,即可批量对目标站点的 Cookie 进行修改。
最后,切换回正常网络 —— 发现邪恶光环仍在生效:
更杯具的是,连加密传输的 HTTPS 站点也未能幸免:
中间人缓存攻击,又多了一种新玩法!
# 用途
或许你要说了,这除了恶作剧恶搞之外,有实际意义吗。
不过,只要充分发挥想象,还是能玩出一些有趣的效果。例如配合 XSS:
屏蔽资料修改页面,阻止用户改密码
屏蔽注销接口,保持用户会话不过期
屏蔽管理后台,让管理员暂时无法操作(XSS 盲打时,对管理员造成眩晕效果,持续时间视管理员 IQ 而定)
或者流量劫持的场合:
屏蔽前端检测脚本,降低用户安全性
屏蔽程序、补丁的更新站点,等等
# 小结
当然,这种所谓的『拒绝服务』,只是本地自欺欺人而已,对真实服务器并没什么影响。
虽然效果不及传统攻击,但这种方式显得更文明一些。只对部分人、甚至部分功能实施攻击,而完全不妨碍其他用户。
来源:https://www.cnblogs.com/index-html/p/cookie-dos.html
关注微信公众号:互联网架构师,在后台回复:2T,可以获取我整理的教程,都是干货。
猜你喜欢
1、GitHub 标星 3.2w!史上最全技术人员面试手册!FackBoo发起和总结
2、如何才能成为优秀的架构师?
3、从零开始搭建创业公司后台技术栈
4、程序员一般可以从什么平台接私活?
5、37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...
6、滴滴业务中台构建实践,首次曝光
7、不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事
8、15张图看懂瞎忙和高效的区别
9、2T架构师学习资料干货分享
如果网站的 Cookie 特别多特别大,会发生什么情况?相关推荐
- Web网站架构演变—高并发、大数据
转 Web网站架构演变-高并发.大数据 2018年07月25日 17:27:22 gis_morningsun 阅读数:599 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可 ...
- 网站关键词排名下降的8大祸首
经常可以看到很多的朋友在论坛.QQ群里头讨论,今天网站排名又下降了,蛋疼啊.这个度娘到底在搞什么名堂,有人说百度又人工了,也有人说百度一个月总有那么几天的,还有人说...那么到底是什么原因导致你网站关 ...
- Chrome 清除特定网站的 cookie
清除全部网站的 cookie 比较简单,但副作用也大,好些自动登陆的.自动填表的都丢失了.如果只是清除特定网站的 cookie,在 Chrome 里的操作其实挺麻烦,因为这个配置隐藏太深了! 没法,有 ...
- 用 API 提取、写入指定网站的 Cookie - 回复 bangrj 的问题
问题来源: http://www.cnblogs.com/del/archive/2009/02/27/1399526.html#1463307 本例效果图: 代码文件: unit Unit1;int ...
- C#用WebBrowser与WIN API辅助模拟获取网站完整Cookie
网上找到的可以完整获取Cookie的方法,转载一下希望能帮助更多人. 亲测可用 在Winform中使用WebBrowser控件获取网站的Cookie有时候是不完整的,默认调用Document.Cook ...
- 网站图片多服务器选多大,网站上的图片一般多大合适
网站上的图片一般多大合适 内容精选 换一换 安装了SSL证书后,访问网站时,HTTPS比HTTP要多几次握手的时间,HTTPS协议握手阶段比较费时,同时还要进行RSA校验,因此使用了SSL证书后,相较 ...
- CSRF 跨站请求伪造 为什么b网站请求a网站的地址能带上a网站的cookie
知道csrf后的问题:CSRF 跨站请求伪造 为什么b网站请求a网站的地址能带上a网站的cookie 答:script.image.iframe的src都不受同源策略的影响.
- 电子商务网站建设策划书_网站建设及推广的5大注意事项
如果你是一个相对成熟的企业,我们在建立网站的时候,总是会让网站开发人员,撰写一个网站策划书,通常而言,我们在做网站策划的时候,一份网站策划书主要包括如下一个因素: ①营销型网站的建立,页面样式的视觉体 ...
- 大带宽服务器对于网站速度的影响有多大?
如今,拥有快速的网站速度已成为网站成功的关键因素之一.当我们浏览网站时,最重要的是能够快速加载页面,否则我们很可能会失去耐心,离开网站.为了确保网站速度,有许多因素需要考虑,其中之一是服务器的带宽.那 ...
- Chrome浏览器中清除特定网站的Cookie数据
背景:当我们在网站上遇到错误时,经常会用到的一个方法就是清除Cookie,清除网站的Cookie和网站数据来重置本地的缓存,很多客户端引起的错误都可以使用该方法修复, 但是在清除Cookie时有一个问 ...
最新文章
- python如何自定义模块_python自定义模块和开源模块使用方法
- LeetCode Binary Search Tree Iterator( 二叉树迭代器)
- react 调用组件方法_React源码分析1 — 组件和对象的创建(createClass,createElement)...
- Thinkphp5 分页带参数(亲测)
- java版 modbus crc16校验 (已测试成功)_java版 ModBus CRC16校验 (已测试成功)
- 微信公众平台新增语义理解接口
- android跳蚤市场的功能,基于Android校园跳蚤市场设计与实现.doc
- 希尔排序不稳定例子_Python实现希尔排序(已编程实现)
- vSphere 6.5 High Availability New Features – Proactive HA(vSphere 6.5高可用性新功能–主动HA)
- 中山纪念中学培训DAY1
- C#多线程学习(三) 生产者和消费者 1——解决线程间冲突的关键
- 后台仿京东商城接口设计缺陷吐槽篇
- 方法重载和重写的区别
- 微型计算机主机的组成不包括______,微型计算机主机的主要组成部分是什么
- ios 设置属性的center_iOS游戏平台Game Center成就显示设置指南
- rar、zip、7z等压缩率的测试
- AcWing 1129 热浪
- mysql中where语句的不等于操作
- CPU占用率100%解决方法
- 游戏盾的原理和功能是什么?