素材 | ThreatPost
解讀 | 二進位01
谷歌地圖是一款國外流行的導航軟體,尤其是對於出國留學、辦公務等,都是給力的工具。
但是,只要是軟體都會有瑕疵。最近,一位研究人員在谷歌地圖中發現了一個跨站點腳本漏洞(XSS),這也讓他贏得了1萬美元的漏洞獎勵。
——XSS漏洞呈現——
Zohar Shachar,是一位應用程式安全主管,他向谷歌報告了這一漏洞,獲得了5000美元的獎勵。隨後谷歌公開披露了這一問題,並於兩個月後宣布「已修復」。然而在Shachar收到補丁通知的幾分鐘後,又找到了谷歌地圖修復補丁的繞過方法。最終他又賺了5000美元。
博客地址:ehpus.com/post/xss-fix-bypass-10000-bounty-in-google-maps
Shachar介紹說,最初的漏洞源於Google地圖有一個功能,它允許用戶創建自己的地圖。在構建地圖完成之後,用戶可以用多種格式導出它。其中一種格式是Keyhole標記語言(Keyhole Markup Language,KML),一種類似於XML的格式,用於在二維地圖中顯示地理注釋和可視化。
當導出為KML時,Shachar發現伺服器的響應中包含一個CDATA標籤。CDATA標記表示文檔的某一部分是通用字符數據(而不是非字符數據),並告訴瀏覽器,這部分不用解析。然而,他發現通過添加特殊字符,CDATA標籤可以很容易地「閉合」。
Shachar說:「具體來說,通過在開頭添加']]>'(即作為』地圖名字『的開頭),你可以將CDATA閉合併添加任意的XML內容,這將導致XSS。」
要利用此漏洞,攻擊者可以創建一個新的空地圖,使用XML改寫,並為SVG(一種基於XML的矢量圖像標籤)添加XSS負載。然後,攻擊者將地圖的權限設置為「public」,即允許每個人訪問它,將其導出為KML並複製下載連結。攻擊者就可以把下載連結發送給受害者。一旦目標被說服點擊該連結,XSS攻擊就會啟動。
——簡單地繞過——
在Shachar報告了這個bug之後,Google說已經修復了。但是Shachar卻驚訝地發現繞過補丁很簡單。
Shachar解釋:「為了修復這個缺陷,Google似乎添加了一個額外的CDATA標記,這意味著攻擊者只需添加兩個CDATA結束標記即可。」
正確的方法應該是重構伺服器代碼,檢測上傳的地圖名稱是否有違規字符(]]>),而不是簡單的防住第一層的xss攻擊。
除了這種簡單地繞過,xss還有眾多常見的繞過方式,如上圖所示。
谷歌一直在不斷擴大其漏洞獎勵計劃。這家科技巨頭最近增加了針對產品的潛在攻擊風險報告的漏洞獎勵計劃,最高獎勵金額為每份報告13337美元。
去年,谷歌推出了開發者數據保護獎勵計劃,該計劃針對google play、goog leapi和google chrome的漏洞報告,最高可獲得5萬美元。同樣在2019年,谷歌將Chrome安全漏洞的最高獎勵金額從5000美元增加到15000美元,並將高質量報告的最高獎勵金額從15000美元增加到30000美元。
安全是一個產品,甚至是公司的根基。你的產品不安全,誰都不願意用。
大家曾經發現過XSS嗎?可以在下方留言分享一下。
(私信小編「XSS」,有驚喜哦!)