我个人虽然不建议做黑帽SEO,但了解一些黑帽技术是白帽SEO的必修课。SEO黑帽的常见技术和最新应用至少可以让我们:
对国内黑帽SEO应用广泛的赌博、色情等网站和排名也做过一些研究,与相关公司也有些接触,对这个行业的利润之大、团队规模之大、探索及应用之深入等是很钦佩的。不过总体上说,国内黑帽SEO的做法偏向传统,更多是对搜索算法的某些已知漏洞或参数的极端、大规模利用。国外一些黑帽对SEO的探索则更出人意料,脑洞更清奇。
前几天看到一个可以用于黑帽SEO的例子,利用Google Search Console的XML Sitemap提交漏洞,劫持其它人网站原有排名。看完后感觉,还有这种操作?一些人真的思路非常活跃,貌似也有时间,在不停地探索着各种可能性。好在这个漏洞没有真正用于黑帽SEO,而是在Google的漏洞举报奖励计划中提交的,发现者Tom Anthony因此获得1337美元奖金。
Tom Anthony不是一般的IT安全人员,显然是干SEO的,而且是英国著名SEO公司Distilled产品研发部门的头。Tom Anthony在他的博客帖子里详细介绍了这个漏洞的用法。
简单说,Tom Anthony通过自己的网站,用ping的机制向Google提交XML版Sitemap(里面包含索引指令,比如这个例子中利用的hreflang标签),由于Google及其它网站的漏洞,Google误以为这个Sitemap是另一个网站的Sitemap,从而使Tom Anthony的网站快速索引,并且劫持了那个网站的排名。
Google允许几种方式提交sitemap.xml:
第3种ping的方式就是向Google的这个URL发get请求:
http://google.com/ping?sitemap=http://www.example.com/sitemap.xml
其中,http://www.example.com/sitemap.xml就是要提交的sitemap.xml的文件。Tom Anthony发现,无论新旧网站,Google收到这个请求后10多秒钟就会过来抓取sitemap.xml文件。
接下来还要利用某些网站的open redirect漏洞,也就是完全开放的可以指向其它网站的转向。一些网站可以通过URL中的参数控制转向,比如登录后用户被转向到某个指定地址:
http://www.abc.com/login?continue=/page.html
也就是abc这个网站用户登录后被转向到page.html页面,继续正常访问。通常,page.html这个页面应该是abc.com这个域名上的。但有些网站的程序不大安全,可以转向到其它网站,如:
用户登录完,被转向到另一个网站xyz.com上去了。而且也不一定需要真的登录,只要访问这个URL,可以是login?,也可以是logout?,或者其它什么script.php?,就被转向了。
这就是开放的转向。这种开放转向还挺常见的,包括大网站。
Tom Anthony注册了一个新域名xyz.com,然后利用这两个漏洞,通过ping向Google提交这样的sitemap.xml:
http://google.com/ping?sitemap=http://www.abc.com/login?continue=xyz.com/sitemap.xml
xyz.com是他自己的新注册的域名,abc.com是某支持开放转向的、有很好搜索流量的、别人的网站。显然,sitemap.xml文件是放在 xyz.com上的,但Google把这个文件当成是abc.com的sitemap文件(转向前的域名)。这样,黑帽SEO可以控制其它人的网站sitemap文件,并利用某些指令劫持权重、排名、流量。
Tom Anthony做了很多测试,其中成功的是hreflang指令。他选了一个英国的零售商网站(作为上面例子中的abc.com域名),为了保护对方,并没有说是哪个网站,在自己的xyz.com域名上采集了对方网站,包括结构和内容,只修改了地址、货币之类的信息。然后在xyz.com域名放上sitemap.xml文件,里面列出那个英国网站的URL,但每个URL加上了多语言网站需要用的hreflang指令,通知Google,这个英国网站页面对应的美国版本在xyz.com上。最后,如前面说的,用ping的机制提交xyz.com上的sitemap.xml文件,但Google却误以为是英国网站abc.com的合法sitemap.xml文件。
结果是,Google传递了英国网站的权重到xyz.com域名上。Tom Anthony这里说的不是很明确,但我理解,是在美国Google.com上获得了那个英国网站在Google.co.uk上应有的权重和排名。
48小时内,新域名就开始被索引,并获得一些长尾词的排名:
在过几天,重要的商业词也获得排名,和Amazon、Toys R Us、沃尔玛等一较高下:
Tom Anthony特意说明,真是个只有6天的域名,没有外链,内容还是采集的。
Tom Anthony接下来发现,xyz.com的Google Search Console账号里显示,那个英国网站被显示在xyz.com的外链中了(人家并没链接过来,估计完全不知道有这个事),更严重的是,Tom Anthony可以在xyz.com的Google Search Console账号里提交那个英国网站的sitemap.xml文件了,不用ping了。Google貌似是把这两个本来无关的网站当成一个或者至少是相关的了。
Tom Anthony也测试了其它指令,比如noindex(陷害竞争对手于无形啊),rel-canonical,不过都没管用。Tom Anthony也想过测试其它东西,比如是否xyz.com网站的结构和内容要和abc.com一样呢?不一样到什么程度还能起作用呢?
另一个有意思的地方是,被劫持的网站有可能根本不知道发生了什么。有些陷害竞争对手的负面SEO技术是可以被发现的,比如给对手制造大量垃圾链接,这个在多个工具中是会被清楚显示的。Tom Anthony发现的这个漏洞,被劫持的网站没办法发现是怎么回事。或根本不知道被劫持了,比如这个案例中的英国网站,没有在美国运营,所以可能根本不会去看Google美国的排名。
2017年9月23号,Tom Anthony提交了这个bug,经过一番来来去去的讨论,2018年3月25号,Google确认bug已经修正,并同意Tom Anthony发布博客帖子。
searchengineland的文章还有大段文字介绍Tom Anthony的心路历程,为什么不把这个漏洞留着自己用,而是提交给Google?与潜在的流量和利益相比,1千多美金的奖金什么都不是。情怀啊。感兴趣的可以深入读一下。
最后,Google对这个漏洞的评论是,“这个漏洞一经发现,他们就组织各相关团队解决了。这是个新发现的漏洞,相信还没有被利用过。”