怎樣利用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之類的(SEO每天一貼的搜索功能就是這個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@SEO每天一貼
版權屬于: 中新虛擬主機
版權所有。轉載時必須以鏈接形式注明作者和原始出處及本聲明。

49 條評論 “怎樣利用XSS漏洞在其它網站注入鏈接?

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

  1. 對于一些SEOer降權了。需要修改這些原因你怎么看
    首頁LOGO標簽,首頁H1標簽,首頁減少鏈接等刪除。
    難道是真的嗎?

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

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

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

留個言唄:

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