浅谈基于JavaScript的DDOS攻击

CloudFlare通过对上百万个网站进行防护,总结出最古老、最普遍的攻击非DDoS攻击莫属。在传统的DDoS攻击中,攻击者会控制大量的傀儡机,然后向目标服务器发送大量请求,阻止合法用户访问网站。

然而,最近几年DDoS攻击技术不断推陈出新:攻击者用一种新型且很有趣的方式欺骗用户参与到攻击活动中。去年CloudFlare就见证了一次使用NTP映射的攻击,可能是DDoS攻击史上最大的一次攻击(大于400Gbps)。

今年的DDoS攻击又出现了一个新的攻击趋势:使用恶意的JavaScript欺骗用户参与DDoS攻击。

NTP或者DNS映射攻击造成的后果受到傀儡服务器数量的限制,同时攻击流量也受傀儡服务器容量的限制。随着时间的推移,服务器会不断的更新补丁,能被攻击者利用的服务器数量也在不断的减少。而基于JavaScript的DDOS攻击有一个非比寻常的特点:任何有浏览器的设备都可能参与攻击,其潜在攻击规模接近无限。

基于JavaScript的DDOS攻击原理

现代网站的交互作用大多数都是采用JavaScript。JavaScript脚本可直接注入HTML中,或者通过 <script src=""> HTML从远程服务器载入。

Web2.0的出现使得网站可以从JavaScript中加载不同步的内容(content asynchronously)。Web2.0更注重交互性,用户在发布内容的过程中不仅实现了与网络服务器之间的交互,也实现了同一网站不同用户之间的交互,以及不同网站之间信息的交互。然而从JavaScript中制造出HTTP(S)请求会使浏览器使用起来更加的有趣,甚至还可以将浏览器变成一种攻击武器。

例如,下面的脚本(略有修改)就会向受害网站发送大量的请求:

function imgflood() { var TARGET = 'victim-website.com' var URI = '/index.php?' var pic = new Image() var rand = Math.floor(Math.random() * 1000) pic.src = 'http://'+TARGET+URI+rand+'=val' } setInterval(imgflood, 10)

该脚本会在目标网页上生成一个图片按钮,图片按钮会指向“victim-website.com” 网站。只要用户访问了含有该脚本的网页,那么他就会成为 “victim-website.com”DDoS攻击中的一员。浏览器发出的每一个请求都是有效请求,于是该攻击又变成了Layer 7 攻击。

FreeBuf百科:应用层攻击

攻击者发送大量的数据包或利用服务器应用的漏洞等,饱和服务器的资源,造成DDOS攻击,该类漏洞往往不需要大量的肉鸡。应用层DDOS攻击的列子包括Slowloris、Apache、Windwos、OpenBSD等的漏洞。如ModSecurity 空指针间接引用远程拒绝服务漏洞(CVE-2013-2765),攻击者可以利用该漏洞使Apache Web服务器崩溃。

如果攻击者在一个网站中嵌入了恶意JavaScript脚本,那么该网站的每一个访客都将成为DDoS攻击中的一员。网站流量越高就意味着DDoS越严重。

入侵共享JavaScript的第三方服务器

许多网站使用的都是普通的JavaScript库,为了节约带宽、提升性能,通常还会将JavaScript脚本共享在第三方服务器上。也就是说如果网站上包含有指向第三方服务器的脚本标签,就意味着所有访问该网站的用户都将自动下载JavaScript脚本,并执行。不幸的是,如果攻击者入侵了该第三方服务器并在JavaScript脚本中注入了DDoS攻击代码,那结果可想而知了,所有的访客也将变成DDoS攻击中的一员。

2014年9月份的时候,jQuery就发生过这种形式的入侵。

子资源完整性简介

通过替换第三方服务器上的JavaScript展开攻击,这是其实也是一种比较老的攻击方式。目前HTTP还没有相关的机制来阻止该脚本的运行,但W3C已经提出了名叫子资源完整性(SRI)的新功能,使用加密哈希值验证脚本,如果哈希值不匹配浏览器可以阻止其运行。

例如,如下脚本标签:

<script src="https://code.jquery.com/jquery-1.10.2.min.js">

浏览器会自动下载该.js文件,并且会不分青红皂白的运行它。即使该文件中被攻击者注入了恶意脚本,浏览器也不会识别。然而如果网站发现了哈希值验证脚本不匹配,子资源完整性(SRI)会告诉浏览器不要运行该脚本。

<script src="https://code.jquery.com/jquery-1.10.2.min.js" integrity="sha256-C6CB9UYIS9UJeqinPHWTHVqh/E1uhG5Twh+Y5qFQmYg=" crossorigin="anonymous">

建议网站管理员将添加这一标签添加到服务器上,用以保护其用户不被利用。

目前支持子资源完整性的浏览器只有Chrome和Firefox。

中间人攻击

位于浏览器和服务器间的中间人可以任意修改数据,包括更改HTML内容或者JavaScript脚本。而如果中间人走偏了,做了一些恶意的事情,如向页面中添加恶意JavaScript并执行,那后果一样很严重 (也就是所谓的中间人攻击)。

修改传输过程中的网站是ISPs和WiFi供应商独有的技术,但如果攻击者获得了这一权限,他们会将传输过程中的脚本替换成恶意JavaScript脚本。更甚的是,如果JavaScript脚本中包含了DDoS脚本,那DDoS攻击成员将会进一步的扩大。

情况还可以更糟糕一点,如果JavaScript文件的传输路径正好经过攻击者的网络,那么参与DDoS攻击的浏览器和用户的数量将会大的惊人。

总结:防御

基于JavaScript的DDOS攻击越来越频发,防御这一攻击的唯一方式是全面启用HTTPS。

* 参考来源blog.cloudflare,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2015-05-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏喔家ArchiSelf

IoT固/软件更新及开源选项

物联网的迅速发展涌现了数十亿与互联网连接的无线嵌入式设备。 从医疗设备到坦克传感器, 智能恒温器, 智能路灯, 水监视器等等, 物联网比以往任何时候都应用广泛。

19520
来自专栏北京马哥教育

Hadoop运维记录 | Zeppelin启用https和Hack内核的过程

本文是在工作过程中讲Zeppelin启用https过程和Hack内核以满足客户需求的记录。 原因是这客户很有意思,该客户中国分公司的人为了验证内网安全性,从国...

38690
来自专栏逸鹏说道

探索ASP.NET MVC5系列之~~~3.视图篇(下)---包含常用表单和暴力解猜防御

其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/d...

43750
来自专栏应兆康的专栏

QCloud_OCR 身份证识别 初探

今天给大家带来的是腾讯云的OCR文字识别,如何使用它来识别身份证。当然,它还可以识别名片,还有许多功能,喜欢研究的小伙伴可以深入深入。本教程采用了Python语...

1.5K50
来自专栏禹都一只猫博客

Zabbix:企业微信报警配置

78280
来自专栏云鼎实验室的专栏

【黑客解析】黑客是如何实现数据库勒索的 ?

前言 每一次重要通用漏洞的爆发总是会带来一片腥风血雨,任何微小的漏洞,基于43亿IPv4地址这个大基数,总是可以被放大! 从MongoDB开始到MySQL,黑客...

2.6K70
来自专栏腾讯技术工程官方号的专栏

你不知道的Android SDK安全测试

image.png 作者介绍:anglia,2014年加入腾讯TEG,一直致力于信鸽和MTA两款产品的移动终端 引言 作为Android手机用户中的一枚残粉...

30850
来自专栏中国白客联盟

一次失败的针对白客联盟的渗透测试(域名劫持成功钓鱼失败)

成功的渗透测试套路基本都是那一套。换汤不换药,不成功的原因却是千奇百怪。 我本人感觉,一次不成功的测试如果讲解细致的话反而更能提升技术水平。 这次就来讲一下针对...

57790
来自专栏大内老A

WCF传输安全(Transfer Security)的基本概念和原理:认证(Authentication)[上篇]

对于任何一个企业级应用来说,安全(Security)都是一个不可回避的话题。如何识别用户的身份?如何将用户可执行的操作和可访问的资源限制在其允许的权限范围之内?...

20680
来自专栏FreeBuf

一种结合了点击劫持、Self-XSS、复制粘贴劫持的新型XSS攻击

XSS劫持(XSSJacking)是由Dylan Ayrey所提出的一种新型XSS攻击,可窃取受害者的敏感信息。 XSS劫持需要其他三种技术配合使用,分别是点击...

27460

扫码关注云+社区

领取腾讯云代金券