Via @上邪 & Cr173,提醒:以下内容仅供安全测试及教学参考,禁止任何非法用途。
原理
Google 的 FeedFetcher 爬虫会将 spreadsheet 的 =image(“link”) 中的任意链接缓存。
例如:
如果我们将 =image(“http://example.com/image.jpg”) 输入到任意一个 Google spreadsheet 中,Google 就会派出 FeedFetcher 爬虫去抓取这个图片并保存到缓存中以将其显示出来。
但是,我们可以为文件名附加上随机参数,使 FeedFetcher 多次抓取同一文件。也就是说,如果一个网站有一个 10MB 的文件,要是将以下列表输入到 Google spreadsheet 中,那么 Google 的爬虫就会抓取该文件 1000 次。
=image("http://targetname/file.pdf?r=0") =image("http://targetname/file.pdf?r=1") =image("http://targetname/file.pdf?r=2") =image("http://targetname/file.pdf?r=3") ... =image("http://targetname/file.pdf?r=1000")
附加上随机参数后,每个链接都被看作是不同的链接,因此 Google 爬虫会去抓取多次,使网站产生大量出站流量。所以任何人只需使用浏览器并打开一些标签,就可以向 web 服务器发动巨大流量 HTTP GET 洪水攻击。
但是这种攻击使攻击者根本不需要有多大的带宽,只需要将“图像”地址输入进 spreadsheet,Google 就会从服务器上抓取这个 10MB 的数据,但是因为地址指向一个 PDF 文件(非图像文件),攻击者从 Google 得到的反馈为 N/A。很明显这种类型的流量可以被放大多倍,引起的后果很可能是灾难性的。
只需要使用一台笔记本,打开几个 web 标签页,仅仅拷贝一些指向 10MB 文件的链接,Google 去抓取同一文件的流量就超过了 700Mbps。而这种 600-700Mbps 的抓取流量大概只持续了 30-45 分钟,我就把服务器关闭了。如果没算错的话,45 分钟内大概走了 240GB 的流量。
我和我的小伙伴被这么高的出站流量惊呆了。如果文件再大一点的话,我想其出站流量可以轻易达到 Gpbs 级,而且进站流量也能达到 50-100Mbps。可以想象如果多个攻击者同时用这种方法攻击某个网站的话,流量能有多少了。同时由于 Google 用会多个 IP 地址进行抓取,所以也很难阻止这种类型的 GET 洪水攻击,而且很容易将攻击持续数个小时,因为这种攻击实在是太容易实施了。
发现这个 bug 后,我开始搜索由其产生的真实案例,还真发现了两例:
第一起攻击案例解释了博主如何不小心攻击了自己,结果收到了巨款流量账单。另一篇文章《利用 Spreadsheet 作为 DDoS 武器》描述了另一个类似攻击,但指出攻击者必须先抓取整个网站并用多个帐户将链接保存在 spreadsheet 中。
不过奇怪的是没有人尝试用附加随机请求变量的方法。尽管只是目标网站的同一个文件,但通过这种添加随机请求变量的方法是可以对同一文件请求成千上万次的,后果还是挺吓人的,而且实施过程很容易,任何人只需要动动手指头拷贝一些链接就可以做到。
我昨天将这个 bug 提交给了 Google,今天得到了他们的反馈,表示这不属于安全漏洞,认为这是一个暴力拒绝服务攻击,不在 bug 奖金范围中。 也许他们事前就知道这个问题,并且认为这不是 bug? 不过即使拿不到奖金,我仍希望他们会修复这个问题,由于实施门槛低,任何人都可以利用 Google 爬虫发动这种攻击。有一种简单的修复方法,就是 Google 只抓取没有请求参数的链接。希望 Google 早日修复这个 bug,使站长免受其带来的威胁。
恐怖=、=
这攻击起来没多少网站受得了
@专五十任务站大全30个 而且谷歌竟然没理= =|||
@WP酷 是啊,要是被用于不当用途,好多网站就遭殃了
这个真心受不了。。。
@生活有意思 太怕了……
额。看起来还真是后怕怕的。