挖洞经验 | 看我如何利用漏洞更改Google搜索排名

只需12美元注册购买一个域名,我就能在Google搜索结果中实现与亚马逊、沃尔玛等高价值关键词相同的广告排名。按照Google Adwords(谷歌付费广告业务)来看,类似Amazon和Walmart

只需12美元注册购买一个域名,我就能在Google搜索结果中实现与亚马逊、沃尔玛等高价值关键词相同的广告排名。按照Google Adwords(谷歌付费广告业务)来看,类似Amazon和Walmart这样的关键词,每次点击需要付费给谷歌的广告竞价是1美元,所以很多大公司每月都需要花费数十万美元来在谷歌搜索排名中打广告,但是,我这种方式可是免费的哦。

我的这种免费搜索排名方式原因在于Google自身的一个系统漏洞,目前Googel方面已经进行了修复,我也获得了$1337的赏金。我想这可能是Google第一次因其搜索结果而被发现的漏洞吧,该漏洞可以影响到谷歌的广告竞价排名。

先导概念

sitemap:站点地图(sitemap)是一种文件,你可以通过该文件列出你网站上的网页,从而将你网站内容的组织架构告知 Google 和其他搜索引擎。Googlebot 等搜索引擎网页抓取工具会读取此文件,以便更加智能地抓取你的网站。站点地图最早由Google提出,现在在多种搜索引擎中被支持,其格式通常为sitemap.xml,且有一定的编写规范。

向Google平台提交sitemap:网站管理人员制作好sitemap文件之后,可以向谷歌搜索管理平台提交这个sitemap文件,Google平台对网站管理权进行验证之后,即会成功解析该sitemap文件,根据其后端算法把其中内容编入索引,以便用户能利用Google搜索引擎对你的网站进行更好的检索。搜索引擎平台的这种sitemap提交功能都是开放免费的,如Google的提交接口、Yahoo提交接口和百度的提交接口。

sitemap文件的提交方式:在具备对注册网站管理权的情况下,除上面所说的sitemap管理接口提交外,还可以通过网站‘ping’方式直接提交,如谷歌的http://www.google.com/ping?sitemap=http://www.example.com/,live的https://www.bing.com/webmaster/ping.aspx?sitemap=http://www.example.com/,等等。除此之外,还有传统的robots.txt文件命名,也能实现网站sitemap生效(具体可参考google-support)。

漏洞介绍

Google提供了一个开放的URL功能,你可以用它来’ping’指向一个XML站点地图(sitemap),该站点地图中包含了如hreflang属性等索引指令,会被后端获取解析。我发现,如果攻击者向Google上传托管了一个这样的站点地图,很多网站都能‘ping’到,在Google中,它甚至会把这个恶意站点地图信任为受害者客户端网站的站点地图。

经过测试,我花了12美元注册了一个个人网站,最终能把该个人网站上的一些高价值关键词放到Google搜索引擎的首页版面。

XML站点地图 & Ping机制

谷歌允许某网站的网站管理员上传sitemap文件到谷歌搜索平台,以让谷歌搜索引擎根据算法实现对其它网站的智能检索,比如说,sitemap.xml中包含的hreflang语言索引会标记出网站存在多少地区版本,它会告知谷歌www.example.com/english/这是一个英文版本,而这www.example.com/deutsch/是一个德文版本,但hreflang语言索引貌似存在链接权重(link equity)’相互借用’的情况,如德文版本的网站会借用点击量高的英文版本网站的链接权重来增加其在Google.de中的排名。

在sitemap文件的提交中,谷歌的声明似乎有些混乱,在提交站点地图的第一步,它声明可以通过ping方式提交sitemap文件,但在后续步骤中它又跳出一个如下警告:

然而,根据经验来看,当然可以通过ping方式来提交sitemap文件,谷歌爬虫会在10多秒内读取到该sitemap文件,但关键是,谷歌也在声明页面中多次提到,通过ping方式提交的sitemap文件不会显示在搜索管理接口(Search Console)的站点地图报告中:

作为关联性测试 由此我也尝试以sitemap的XML文件方式,添加一些noindex和rel-canonical类似的索引指令,而且也测试过一组XML漏洞利用,但可惜貌似谷歌根本就不会解析这些指令。

Google Search Console 中的站点地图文件提交

在谷歌搜索管理接口(Search Console)中,如果你要上传提交某网站的一个sitemap.xml文件,如果你对该网站不具备管理权限,不能通过谷歌的权限机制验证,那么谷歌就会拒绝这种sitemap文件。如下所示:

稍后我们会回到这里作些测试。

开放重定向

很多网站会使用URL参数来控制重定向:

就比如上面这个例子,登录green网站后我会被重定向到page.html,有些过滤措施太差的网站则会使用“开放式重定向”参数,让访问动作重定向到不同的网站域,如:

这种“开放式重定向”参数环境下,通常不需要登录等其它交互动作,就会立即把用户访问重定向:

由于开放重定向应用非常普遍,不具太多安全威胁,所以谷歌没有把这种问题纳入到漏洞奖励计划。虽然很多公司都会对恶意的开放重定向进行过滤,但也可想办法绕过这种过滤措施,如下对Tesco公司网站的开放重定向绕过漏洞:

Tesco是一家盈利超过500亿英镑的英国零售商,有超过10亿英镑的收入来自其网销渠道。我向Tesco公司报告了该漏洞,目前他们已经修复了这个漏洞。

通过开放重定向方式’Ping’ sitemap文件

现在,你可能猜到我想做什么了,事实证明,当用谷歌网站去’ping’一个XML的sitemap文件时,如果你在其中提交的URL是一个重定向链接时,谷歌会遵从重定向跳转,甚至是跨域的网站跳转。更重要的是,它貌似还会将XML站点地图文件与进行重定向的网站域相关联,并将重定向后找到的站点地图文件,视为该网站域经过授权验证的文件,如:

该例中,恶意站点地图文件evil.xml托管在网站blue.com上,但谷歌会把它误认为是来自网站green.com上经过验证的文件,使用这种方式,你可以向谷歌上传提交一个自己不具管理权限网站的sitemap文件,由此,该不具管理权限的网站就会被谷歌在后端进行检索导向更改。

测试:使用 hreflang 属性免费“窃取”网站的链接权重和排名

现在,有了这些尝试之后,我还不确定谷歌是否会信任一个跨域的重定向站点地图文件,所以我只有做个测试来证明。为了理解这种机制,我也对重定向中的各部份参数都作了一系列测试。

我为一家总部在英国的零售公司创建了一个假域名,并架构了一个模拟该网站的AWS服务器,主要目的是为了对网站页面进行一些改变,如更改资金/地址等信息。下文中我已经匿名了该公司名称,我们暂且称它为受害者网站victim.com。

我先创建了一个sitemap文件,并把它托管在evil.com网站上,其中sitemap文件只包含了victim.com网站相关的URL信息,这些URL是一些hreflang属性的不同victim.com链接指向,其中说明了它是英文版本的victim.com网站。然后,我把这个sitemap文件通过谷歌的’ping’方式,利用跳转到victim.com网站上的开放重定向URL手段,提交上传到了谷歌搜索管理接口中。

在两天内,该victim.com网站的流量慢慢呈上升趋势:

几天之后,它在谷歌搜索引擎结果中竟然与关键字 亚马逊&沃尔玛 的排名相同:

而且,谷歌搜索管理接口中关于victim.com网站的信息中,竟然能显示其与evil.com网站有指向关系:

还有,现在我发现竟然也可以在evil.com的谷歌搜索管理接口中,提交上传关于victim.com网站的sitemap文件:

这貌似是因为谷歌后端把两个网站指向关联之后,就能通过evil.com的搜索管理接口间接对victim.com的sitemap文件进行更改控制吧。可以为提交的sitemap文件进行一些索引跟踪,看看下图吧,已经有上千页面的索引了,Searchmetrics(企业搜索引擎优化和内容营销平台)也能反映出其逐渐提升的流量信息:

在谷歌搜索管理接口中,其显示已有超过百万的搜索展示次数,以及超过10,000多次来自谷歌搜索引擎的点击量!我可没付什么百万美金广告费,仅只是提交了一个sitemap文件就能这样了!

这种方式,你根本就不会注意到我的那个恶意网站evil.com,就这样就能实现搜索诈骗、设置任意广告,更严重的是我可以把源源不断的流量变现。这种恶意方式,一方面会给谷歌搜索使用者带来欺诈,另外也会对依赖谷歌搜索流量的公司形成风险。

总结&漏洞威胁

这种方法受害者网站victim.com根本无法检测到这种搜索导向的改变,而且攻击者提交的sitemap文件也不会出现在其终端上,如果你按照以上方法,利用不同语言版本站点的链接权重,就能完全做到隐蔽无形,竞争对手可能会对你的站点排名觉得困惑,一脸懵逼。

在当今互联网时代,流量对于很多大公司而言都至关重要,其中涉及的访问量、点击率都会转换为经济效益。而搜索引擎优化SEO (Search Engine Optimization)本来就是一门大学问,以上方法可以间接对目标网站进行搜索排名改变,进而影响到其网站流量,最终可能改变的是其公司经济利益。也好,谷歌非常重视这个漏洞,最终支付了我$1,337美元的赏金。

漏洞报送进程

2017.9.23 – 漏洞初报

2017.9.25 – 谷歌确认漏洞并进行分类

2017.10.2  – 我向谷歌提供更多证明

……

2018.2.15 – 谷歌考虑赏金

2018.3.6 – 谷歌奖励我$1337

2018.3.25 – 谷歌告知我他们正在对漏洞进行一些后续修复,允许我披露漏洞

*参考来源:tomanthony,FreeBuf小编clouds编译,转载请注明来自FreeBuf.COM

相关推荐

留言与评论(共有 0 条评论)
   
验证码: