怎樣利用XSS漏洞在其它網站注入鏈接?

前兩天英國的SEO老手Tom Anthony曝出一个 Google蜘蛛存在的漏洞,可能被黑帽SEO利用XSS漏洞在別人網站注入鏈接,而且這些鏈接確定會被Google蜘蛛抓取。這個漏洞如果被大規模利用,顯然是會影響權重流動和搜索排名的。

Tom去年11月就把這個漏洞彙報給Google了,不過到目前爲止Google並沒有解決這個漏洞的意思,他們的說法是“Google的現有保護機制應該能預防這種濫用,不過相關團隊正在檢查驗證”。另外Google在回複Tom時提到了有些“內部溝通上的困難”,公司大了是不是都會有這種問題?

既然Google過了5個月都沒有采取措施,Tom決定把漏洞公布出來,站長們好檢查自己網站是否有XSS漏洞,提取采取預防措施,以防自己網站被注入鏈接。Google同意Tom公布相關信息,看來還是挺自信的。

什麽是XSS攻擊

XSS攻击是Cross Site Scripting的缩写,跨站脚本攻击的意思。按说Cross Site Scripting的缩写应该是CSS,但就和页面样式表那个CSS重复了,所以跨站脚本攻击这个改成了XSS。

XSS是一种代码注入攻击。大部分网站都会有某些功能脚本是可以任意修改URL的,比如搜索功能,UGC用户贡献内容网站的提交功能,用脚本实现的转向等等。比如搜索概念,URL经常就是domain.com/search.php?keyword,或者domain.com/?s=keyword之类的(抢庄斗牛的搜索功能就是这个URL格式),其中的keyword是可以替换成任意字符的。

那麽keyword部分被替換成腳本會發生什麽?比如domain.com/?s=<script>alert(‘XSS’)</script>。有這種漏洞的網站就是在URL中注入惡意腳本時,沒有進行安全過濾,而浏覽器也沒有分辨出是惡意腳本,所以執行了惡意腳本。

XSS可以被用來獲取用戶敏感信息,可以用來冒充用戶向網站發出請求等等,還可以執行腳本,在生成的HTML代碼中插入內容,這就是黑帽SEO可以利用來注入鏈接的漏洞。

怎樣利用XSS漏洞在別人網站注入鏈接

修改URL中的參數,替換爲腳本,浏覽器執行腳本,在HTML中插入內容,所以也可以插入鏈接。當然如果只是訪問用戶的浏覽器上顯示鏈接,搜索引擎不抓取這個URL的話,黑帽SEO也就不感兴趣了。问题就是 Google蜘蛛可以抓取被注入脚本的URL,也可以执行JS,所以也就可以看到被注入的链接。

防止XSS攻擊,一是服務器端的程序要做安全過濾,最基本的是HTML轉義,把<script>alert(‘XSS’)</script>當作被搜索的字符串,而不是要執行的腳本。二是浏覽器端的XSS識別,現在的很多浏覽器(如Chrome)看到URL中有可疑字符如script之類的,會直接拒絕打開頁面。

如果Google蜘蛛和Google自己的Chrome浏览器一样能够识别XSS攻击,带有注入脚本的URL根本不抓取,就没有事情了。但根据Google官方文件说明,到目前为止,Google蜘蛛使用的是比较老的Chrome 41版本,而Chrome 41是没有XSS识别功能的。所以,有XSS程序漏洞的网站,有可能被Google蜘蛛抓取到被注入链接的URL。

Tom做了實驗。某新銀行(Revolut)網站有XSS漏洞(天哪,銀行網站有XSS漏洞。不過現在已經補上了),Tom在Revolut域名上構造了個帶有注入腳本的URL,浏覽器執行後會在頁面頂部放上個鏈接。Google蜘蛛會怎樣處理這種URL呢?Tom用Google的頁面移動友好性測試工具验证了一下,因为这个工具会按照 Google蜘蛛的方式渲染页面。结果是这样:

XSS攻击注入链接

顯然,Google能夠抓取URL,執行注入的腳本,生成的頁面頂部是有那個被注入的鏈接的。這可是來自銀行域名的一個外部鏈接。

爲了進一步驗證,Tom把實驗URL提交給Google,結果說明,Google索引了這個URL,快照顯示,通過JS腳本注入的鏈接也正常出現在頁面上:

Google索引了被XSS注入的链接

Tom還發現,通過XSS注入,也可以添加、修改HTML中的標簽,比如canonical標簽,這個也是挺危險啊。不過這個和本帖XSS注入鏈接關系不大,就不細說了。

XSS攻擊注入的鏈接有效果嗎?

僅僅能索引不一定說明問題,如果如某些垃圾鏈接一樣被Google忽略,沒有鏈接的效果,那也不能利用來操控外部鏈接。爲了驗證這種URL上的鏈接是否有鏈接效果,Tom進一步做了實驗。

Tom在Revolut域名的URL上注入一個鏈接,指向自己實驗網站上以前不存在、剛剛創建的一個頁面,提交Revolut的URL,沒多久,Google就抓取了Tom自己實驗網站上的新頁面,而且索引了這個頁面,出現在搜索結果中:

這說明,被注入的鏈接,至少是能起到吸引蜘蛛抓取的作用的。對權重流動和排名有沒有普通鏈接一樣的作用呢?Tom顧慮到可能會對正常搜索結果的影響而沒有進一步試驗了。

這裏不得不說,國外很多SEO是很有情懷的。我在想,如果是國內SEO們發現這個等級的漏洞,會報告給搜索引擎補上漏洞嗎?大概會把這個漏洞爲己所用,運用到死吧。

對搜索結果的潛在影響有多大?

如果這種方式注入的鏈接有正常鏈接的效果,對權重、排名有效,那麽只要被黑帽SEO使用,對操控權重、排名顯然有很大幫助,對搜索結果有多大潛在影響呢?

https://www.openbugbounty.org/ 網站上列出了12萬5千多有XSS漏洞的網站,其中包括260個.gov政府網站,971個.edu域名網站,包括了前500個鏈接最多網站中的195個,想象一下潛在的影響會有多大。

当然,Google很自信,他们的防御机制应该可以鉴别出这种黑帽方法,我猜想Google内部调查说明,这种方法到目前为止没有被利用。不过,这是 Tom发布信息之前,现在呢?我估计有很多人已经在疯狂实验这个方法的有效性了。我这篇帖子发出来,国内肯定也会有SEO去尝试。那么,大规模滥用这种注入方法的情况下,Google的预防机制还会有效吗?

另一方面,几乎可以肯定, Tom的帖子发出来,会迫使Google必须要积极采取措施,补上这个漏洞,不能让XSS攻击注入链接真的成为有效的SEO作弊方法。想尝试的,尽快吧,很快就会没用的。

5月8号更新:Google在7号的Google I/O开发大会上宣布,Google蜘蛛将使用最新版的Chrome引擎,目前版本是74,以后都会保持使用最新版本。看来Google早就做了准备,所以这么有信心。

作者: Zac@抢庄斗牛
版權屬于: 中新虛擬主機
版權所有。轉載時必須以鏈接形式注明作者和原始出處及本聲明。

48 条评论 “怎樣利用XSS漏洞在其它網站注入鏈接?

    1. 這個xss跨站不是你理解的那個跨站,我百度給你搜了下這個跨站攻擊的解釋—“惡意攻擊者往Web頁面裏插入惡意的Script代碼,當用戶浏覽該頁之時,嵌入其中Web裏面的Script代碼會被執行,從而達到惡意攻擊用戶的目的”,這個屬于網站安全範疇的東西了。

  1. 對于一些SEOer降權了。需要修改這些原因你怎麽看
    首頁LOGO标签,首頁H1标签,首頁减少链接等删除。
    難道是真的嗎?

  2. 好像我原来的网站就被这么搞了,然后百度site没有,只有当我Google的时候,出来了好多,我才知道我原来一直再首頁的排名为什么现在找不到了。
    于是,我做了一個更錯誤的決定,重裝了服務器,網站模板也全部更換了。www.8090shuo.com
    結果是到現在一個多月了,找不到排名。

    1. 这个错了,这个是老域名,就是这个站,我昨天晚上发完,然后百度了下,居然排名首頁了。哈哈
      還是老域名有優勢
      相反,我這個新域名的站同樣的遭遇,不過同一天換的模板同一天上線,到現在沒有排名。ww.yizushuo.com

  3. 感覺確實有點可怕,這樣對很多站長就不公平了,可能還面臨降權的風險不說還幫別人做嫁衣!

留個言呗:

您的郵箱不會被顯示在頁面上。標有*的是必填項。