危机公关

Google搜索引擎中的安全漏洞,通过开放重定向窃取其他站点的权重

  • 时间:
  • 浏览:6973

Google提供了一个开放的URL  ,你可以通过它"ping"一个XML站点地图  ,他们会获取并对其进行解析的  ,该文件可以包含一些索引指令  。我发现  ,对于任何开放重定向的网站(例如  ,LinkedIn ,Facebook和其他1000多个电子商务网站)  ,你可以ping一个你(攻击者)自己的站点 ,Google会把这个错误站点当做你要仿冒的知名站点  。

我在一个在新的网站通过hreflang指令将测试了这个bug(本来没有期望能有啥好的效果)  ,没想到很快  ,就将它推到美国重金主题的谷歌搜索结果的前几页中  ,使站点看起来像是属于一个大型英国电子商务网站  。

目前谷歌已经修复这个问题  ,并奖励我了1337美元的bug bounty  。我相信这可能是第一次在他们在实际搜索引擎中上给出的安全问题奖励  ,因为这个bug直接影响到网站的排名  。

作为我的日常研究工作的一部分 ,我近发现了一个问题  ,允许攻击者向Google提交一个XML站点地图 ,以查找未被谷歌收录的的站点  。由于这些文件可以包含索引指令 ,SEO搜索排名 ,如hreflang ,因此攻击者可以利用这些指令帮助自己的网站在Google搜索结果中的排名  。

为了测试 ,我仅仅花了12美元就完成了我测试环境的搭建  ,将一个新注册的没有任何入站链接的域名  ,推在了谷歌搜索结果的顶级收费搜索主题的第一页排名  。

XML 站点地图和Ping机制

Google允许通过提交XML网站地图  ,用于帮助引擎爬虫主动发现URL  ,他还允许使用hreflang指令用于翻译一个页面国际化的各不同语言版本的内容(例如  ,"hey Google, this is the US page, but I have a German page on this URL…")  。目前还不清楚Google是如何使用解析和使用这些指令的(就像任何与Google搜索算法相关的指令一样)  ,但似乎hreflang允许一个URL从另一个URL "借用"索引权重和将一个已有URL的索引权重用于另一个URL(比如大多数人链接到US.com版本  ,但是德国版的版本可以借用这个权重  ,以便在Google.de中获得更好的排名)  。

你可以通过Google Search Console ,在robots.txt中或通过特殊的"ping"URL  ,为你的域名提交XML 站点地图  。谷歌自己的文档似乎有点矛盾  。在页面的顶部 ,他们建议是通过ping机制提交站点地图  ,但在页面的底部又对此发出警告:

但是 ,根据经验判断 ,你完全可以通过ping机制提交一个新的XML站点地图  ,Googlebot通常在ping后的10-15秒内获取文件 。重要的是 ,Google在页面上也提到过几次  ,如果你通过ping机制提交站点地图  ,它将不会显示在你的搜索Console中:

作为一个相关测试  ,我测试了是否可以通过XML站点地图添加其他已知的搜索指令(比如noindex ,rel-canonical)  ,以及尝试一堆XML攻击 ,但似乎对Google并没有使用到  。

Google Search Console(GSC)提交

如果你尝试在GSC中提交XML站点地图 ,而且其中包含了你未被授权的其他域的URL  ,则GSC会拒绝他们:

开放重定向

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

在这个例子中 ,我将被重定向(登录后)到page.html 。安全限制不好的网站允许使用所谓的"开放重定向"  ,这些参数允许重定向到不同的域:

通常不需要任何交互(如登录)  ,所以会立即将用户重定向:

开放重定向非常普遍  ,通常认为不有什么危险;由于这些原因  ,Google也没有将他们纳入到bug奖励计划中  。但是  ,在可能的情况下 ,企业应该会尽量避免这些情况发生  ,但你通常可以绕过他们的保护:

Tesco是一家英国零售商 ,收入超过500亿英镑  ,超过10亿英镑的收入来自其网站  。我向特易购(Tesco)报告了这个例子(还有在我的研究中发现的其他公司) ,SEO排名优化  ,他们已经修复了这个问题  。

通过打开重定向Ping Sitemaps

现在  ,你可能已经猜到了我要尝试的方法  。事实证明  ,当你ping一个XML站点地图时  ,如果你提交的URL是一个重定向  ,谷歌将跟着他重定向 ,即便跨域了  。而且 ,它似乎还将该XML站点地图与进行重定向到域进行关联  ,并将重定向后发现的站点地图视为该域的授权 。例如:

本例中  ,evil.xml站点地图托管在blue.com上 ,但Google会将其关联为green.com的所有权并为其授权 。使用此功能 ,你可以为没有权限的网站提交XML站点地图  ,并发送Google搜索指令  。

实验:使用hreflang指令免费"窃取"权重排名

现在我了知道了各个细节部分 ,但是还没有证实谷歌会真的相信跨域重定向的XML站点地图  ,所以我做了一个试验来测试它  。我还做了很多更小的测试来了解了解(可能能各种死路)各部分  ,但并没有指望这个试验能够像预期的那样行得通 。

我为一家没有在美国经营的英国零售公司创建了一个虚假域名 ,并且在AWS服务器上创建了一个模仿该网站(主要是通过收集合法内容并对其进行重新设计  ,例如修改货币/地址等)  。为了保护他们 ,在此我隐匿公司名(和行业)  ,我们姑且称他为victim.com  。