« 上一篇 Mobile-first indexing enabled for anywebsite--英文站谷歌SEO值得拥有SEO全国 下一篇 »

最新爬虫漏洞研究:利用谷歌Googlebot实现XSS攻击

多数SEO从业者,尤其是早期谷歌尚未退出中国市场就进入SEO行业或英文网站SEO人员,可能对谷歌搜索引擎的一些特性会很了解。区别于国内诸如百度、360等搜索引,谷歌有一个非常明显的特点:对网页的抓取和收录有着非常高的开放度。讲人话:谷歌更容易收录你的网页!

不要以为SEO祥子跑题了。本文探讨主题是“谷歌Googlebot XSS攻击漏洞”。而这个漏洞利用过程确实以谷歌的收录速度作为一个前提。如果谷歌跟百度或其它搜索引擎一样,对网页的索引具有较高的门槛,那么网络攻击者或许很难利用这个漏洞,以致于给用户带来风险。

谷歌如何抓取并理解网页?

所有的爬虫程序,不管理搜索引擎或许某些网页内容漫游器,都有自己的一套机制来获取内容。比如PHP最常用的内置cURL函数来抓取网页,你在file_get_contents时可以获得网页的文本内容,即常说的HTML源代码,并对内容进行分析处理。

而我们常见的中文搜索引擎如BAIDUSPIDER,它不仅会获取文本内容,并会对网页的富内容进行分析,比如视频、图片等,百度同时也支持部分结构化数据结构。同时,蜘蛛程序会尝试分析页面的CSS和JS,以进一步判断网页是否存在有作敝行为及判断页面用户体验性是否友好。但是,全球除谷歌以外的几乎所有搜索引擎,解析并理解JS的能力似乎并不够强大。

谷歌可能是最能以用户视角来分析网页的搜索引擎。Googlebot采用自家的Chrome浏览器内核来访问及宣染网页。我们普通用户通常会升级并使用最新的Chrome版本,比如祥子现在使用的是Chrome 74.0.3729.131。最新版本的Chrome内置了一个叫作XSS Auditor的功能。XSS Auditor是啥呢?XSS Auditor是一个被加入在了chrome内核中的安全功能,其它调用chrome内核的浏览器也具备这个功能,目的是为了抵御XSS,功能很强大,对反射型XSS而言,感觉一大半的payload都被过滤掉了,DOM的话效果弱很多,而存储型根本没用。与之类似的IE中也有自己的XSS Filter。

竟然Googlebot就是Chrome,那么问题在哪里呢?其实问题就在于GoogleBOT的Chrome版本是41(2015)。而这个旧版本的Chrome,它没有XSS Auditor。所以GogoleBot在抓取一个URL里,并不知道是否携带XSS攻击脚本。那么,谷歌有很大可能性收录一条带有XSS脚本的网址,并出现在谷歌搜索结果中。其他用户通过访问这条网址可能会遭受某些损失:个人信息泄露、浏览器被插意执行脚本、浏览器被跳转到其它恶意网页、下载恶意程序等。

历史上较严重的XSS攻击事件举个例:

2011年6月28日晚,新浪微博出现了一次比较大的XSS攻击事件。大量用户自动发送某些恶意内容的微博和私信,并自动关注一位名为“hellosamy”的用户。事件的经过线索如下:20:14,开始有大量带V的认证用户中招转发蠕虫;20:30,某网站中的病毒页面无法访问;20:32,新浪微博中hellosamy用户无法访问;21:02,新浪漏洞修补完毕。

看到这里,相信对SEO和网络安全均有了解的看官已经明白这个风险之所在了。祥子在此也还是费些口舌将其道明白吧。

如果利用谷歌Googlebot实现XSS脚本攻击利用 :

1. 找到可以执行XSS脚本的网站;

2. 在某些网址通过加入XSS脚本来进行访问测试;

3. 将携带XSS脚本的网址发布到其它网站(SEO行业称之为外链),并在谷歌提交该XSS网址,让谷歌收录它;

4. 如果谷歌一旦收录该网址并出现在搜索结果中,就有机会被其它用户访问。

一个Googlebot XSS实例-注入脚本修改网页Cononical标签:


注入脚本修改网页Cononical标签

在访问的加入JS脚本的URL,在网页用JS写入Cononbical标签。用谷歌google mobile friendly test工具测试发现,Googlebot抓取到的网页代码,成功显示了Canonical标签。同样的道理,其它的JS脚本均可相同方法注入。

网站主如何避免被Googlebot XSS漏洞利用:

1. 如果你的网站全站采用了静态或伪静态技术,请在robots协议里禁止蜘蛛抓取带问号的URL。避免此类页面被收录,即在/robots.txt加入一行:disallow: /*?* 。

2.检查你的网站,避免可被XSS利用。