有没有想过,如果网站的 Cookie 特别多特别大,会发生什么情况?

不多说,马上来试验一下:

for (i = 0; i < 20; i++)document.cookie = i + '=' + 'X'.repeat(2000)

什么,网站居然报错了?

众所周知,Cookie 是塞在请求头里的。如果 Cookie 太多,显然整个 HTTP 头也会被撑大。

然而现实中,几乎所有的服务器都会对请求头长度做限制,避免畸形封包消耗服务器资源。

那么有趣的事就来了 —— Cookie 是可以长期储存的,所以只要不过期,对应的站点就一直无法访问!

不信?点击这里试试 (警告:不会清 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

超大 Cookie 拒绝服务攻击相关推荐

  1. DoS本地拒绝服务攻击

    拒绝服务攻击 拒绝服务攻击(Denial of Service)并非一种具体的攻击方式,针对信息安全的六大要求也并非机密性.完整性.访问控制或是身份验证,而是针对本世纪才进行重视的可用性.因为它通过系 ...

  2. 缓慢的http拒绝服务攻击 tomcat_攻击技术

    一.跨站脚本攻击 概念 跨站脚本攻击(Cross-Site Scripting, XSS),可以将代码注入到用户浏览的网页上,这种代码包括 HTML 和 JavaScript. 攻击原理 例如有一个论 ...

  3. 【网络安全】——服务端安全(注入攻击、认证与会话管理和访问控制、访问控制、加密算法与随机数、Web框架安全、应用层拒绝服务攻击DDOS)

    这一篇博客记录的是服务端安全应用安全的知识,学习内容来自<白帽子讲Web安全>. ​ 承接自上一篇客户端安全之后,包括注入攻击.认证与会话管理和访问控制.访问控制.加密算法与随机数.Web ...

  4. 入侵防御之拒绝服务攻击

    是什么 DOS攻击(Denial-of-Service Attack),拒绝服务攻击,目的是破坏目标系统的可用性,使用目标网络或系统资源耗尽,使服务暂时中断或停止,导致其合法用户无法访问对服务干涉.其 ...

  5. 【Web安全】应用层拒绝服务攻击

    目录 1.DDOS简介 2.应用层DDOS 2.1 CC攻击 2.2 限制请求频率 2.3 道高一尺,魔高一丈 3.验证码 CAPTCHA 4.防御应用层DDOS 5.资源耗尽攻击 5.1 Slowl ...

  6. GitChat 被恶意攻击引发的技术性思考:拒绝服务攻击

    本文来自作者 肖志华 在 GitChat 上分享 「GitChat 被恶意攻击引发的技术性思考:拒绝服务攻击」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 拒绝服务的类型很多,挑几个有特 ...

  7. 网络安全——网络攻击原理(嗅探攻击、截获攻击、拒绝服务攻击)

    摘要: 网络攻击是导致网络安全威胁的主要原因,嗅探攻击.截获攻击.拒绝服务攻击等是常见的网络攻击.网络攻击和网络安全是矛盾的两个方面,但是了解网络攻击手段可以帮助我们更好地保护网络安全.嗅探攻击是被动 ...

  8. Tomcat 安全漏洞 - 缓慢的HTTP拒绝服务攻击 / 启动了OPTIONS方法

    缓慢的HTTP拒绝服务攻击 slow_Http_DoS  原理:通过并发连接池进行的慢速读攻击(基于TCP持久时间)等.慢速攻击基于HTTP协议,通过精心的设计和构造,这种特殊的请求包会造成服务器延时 ...

  9. 拒绝服务攻击/分布式拒绝服务攻击

    拒绝服务(Denial of Service,简称DoS) 是一种简单的破坏性攻击.通常是利用传输协议下的某个弱点.系统存在的漏洞.或服务器的漏洞.对目标系统发起大规模的进攻.用超出目标处理能力的海量 ...

最新文章

  1. Qt中openGL的四个重要事件(initializeGL() resizeGL() paintGL() pdateGL())调用规则
  2. SQL Server 2012 安全新特性:包含数据库
  3. hadoop配置安装
  4. 添加vlan后无法上网_KTV多SSID绑定VLAN实用案例,值得一看的干货
  5. Ubuntu 14.04 LTS 配置 Juno 版 Keystone
  6. android 小黄车首页,android采用MVP漫画APP、适配刘海屏、小黄车主界面、录音波浪动画、综合APP等源码...
  7. 2018蓝桥杯省赛---java---C---1(哪天返回)
  8. 解决Git Log在IDEA中乱码的问题
  9. 7-5 输出字符串中出现的字符 (20 分)
  10. Lecture 6:值函数近似
  11. orcad16.3下载
  12. 阿里巴巴大数据将帮助法院办案
  13. arcgis 将2000球面坐标转换成平面坐标
  14. Bee 事务注解 @Tran 使用实例
  15. 忒修斯之船,你还是原来的你吗?
  16. python拼音名_Python汉字转换成拼音
  17. 微信小程序中使用全局变量解决页面的传值问题
  18. 数据结构(python语言描述)课后题答案_数据结构课后习题及答案
  19. linux查看进程状态
  20. fabric 部署测试网络

热门文章

  1. 你知道怎么在生产环境下部署tomcat吗?,灵魂拷问
  2. CMPB 2021|U-Net:又一魔改U-Net应用于腹部肝脏分割任务!
  3. python【力扣LeetCode算法题库】101-对称二叉树
  4. python【Matlibplot绘图库】绘制用于学术论文投稿的黑白图片
  5. 测量角速度_锡膏的粘度如何正确鉴别和精确测量?
  6. 外包网络推广公司浅析想保持稳定的SEO排名和流量,需要做什么呢?
  7. 浅析当下专业网站优化公司所具有的特性
  8. 项目收获与体会_员工之声|在项目实践中提高,在团队合作中成长——参与项目有感...
  9. linux shell程序代码,linux shell实用程序源代码pidof
  10. linux命令:返回上一次目录