Grammarly For Chrome擴展任意用戶劫持漏洞分析及利用
綜述
2018年02月02日,Grammarly官方更新了Grammarly for Chrome14.826.1446版本,其中修復了一個嚴重漏洞,在此之前的版本中此擴展能夠向所有網站曝光用戶的令牌信息,導致任意網站都可以訪問並修改用戶在Grammarly上的文檔,詞典,訪問歷史,日誌信息,用戶信息等敏感數據。Grammarly官方當日立即修復此漏洞,與2月5日關閉此Bug。影響版本:≤ 14.826.1446。攻擊難度:低。
危害程度:高。
官方修復情況如下:目前官方已經發布最新版本14.826.1446什麼是Grammarly?
Grammarly是一款擁有1000w+用戶的國外廠商開發的語法檢查應用,提供了瀏覽器擴展、網頁版、 Mac版和 Windows 版。如果你使用 Windows,Grammarly 還提供了 Word 插件,下載後可以在Word 內部調用插件直接檢查語法錯誤,我也是Grammarly的忠實用戶之一。
Grammarly可以實現實時語法檢查,你邊寫它就邊改,語法問題和修改意見會以標註的形式顯示在文檔的右側,方便你去一一查看,而且在每條批註下面都會配有詳細的解釋,告訴你哪裡錯了,為什麼要這樣修改。當你出現錯誤的內容可以存入用戶字典或者文檔中。
關於Grammarly的厲害之處請戳:https://youtu.be/wOxVMRwLfjU漏洞分析
從網路上下載老版本的擴展插件,這裡我們使用最新版之前的一個版本14.825.1439(這裡有所有版本https://www.crx4chrome.com/history/2722/),然後解壓插件包,主要代碼都在extension_14_825_1439_0srcjsGrammarly.js文件中,代碼很多,但是主要核心漏洞代碼如下圖所示:
這裡在返回的Message對象中,當返回的數據data.action=user,並且data.Grammarly=true時,調用sendUser()函數,在sendUser()函數中直接將user對象返回了,此user對象中包括了用戶的所有信息,包括email,firstName,grauth等敏感信息,所以導致任意網站都可以通過觸發message事件,通過postMessage操作獲取Grammarly用戶的敏感信息。
因為Grammarly的很多介面登錄認證只需要grauth這個token值就可以直接訪問,所以通過惡意獲取用戶grauth值之後就可以隨意操作用戶的數據信息了。
漏洞驗證及利用
在官方的漏洞詳情中,漏洞作者給出了在瀏覽器console中執行幾行代碼即可觸發漏洞,如下圖所示:
下面來解釋一下這四行代碼的意思:
- 將當前DOM中的節點元素置為可編輯狀態(默認不可編輯);
- 返迴文檔中匹配指定的選擇器組的第一個元素,這裡返回[data-action=」editor」]的節點元素並執行點擊操作;
- 返回class=gr_-ifr的iframe節點元素對象,再通過contentWindow得到iframe包含頁面的window對象,最後將此對象註冊到一個指定的監聽器上,當該對象觸髮指定的事件message時,回調並執行匿名函數;
- 通過postMessage觸發時間,並發送用戶數據。
最後控制台上將返回用戶信息中的email和grauth信息,如下圖效果:
通過獲取到grauth內容後,發送附帶grauth
cookie內容(grauth未失效)的請求到Grammarly介面即可獲取對應用戶數據,如下圖訪問用戶的文檔:其他可利用介面如下:
雖然這裡可以證明漏洞,但是並沒有充分利用此漏洞將其危害體現出來。漏洞報告中提到任意網站都可以獲取用戶敏感信息,那就是說我們創建一個惡意網站,只要安裝Grammarly
for Chrome插件的用戶訪問到我們的網站就會被劫持,下面我們來實現此利用場景。
首先我們的站點頁面必須存在可編輯文本的功能,比如<textarea>,這樣才能自動調出Grammarly功能,所以我們構建如下頁面即可:
這裡已經成功指出我們的語法錯誤,這時點擊右下角的圖標即可進行相關操作了。
然後我們在此頁面中加入構造好的js代碼,在編輯區觸發此js代碼即可:
最後將我們構造好的站點發送給受害者,當受害者訪問此網站時,滑鼠移動到編輯區即可觸發漏洞,發送用戶email和grauth內容到攻擊者伺服器,如下圖我們的伺服器上收到的用戶信息:
備註:這裡只進行局部測試,攻擊方法可行,未進行任何非法操作及數據收集。
漏洞修復
在2018年02月02日更新的14.826.1446最新版本中,已經修復此漏洞,在代碼中直接將用戶的敏感信息刪除掉,如下圖修復代碼對比:
在Chrome中安裝最新版本後,通過console調試也可以看出返回的data.user信息中已經沒有email和grauth等敏感信息了,如下圖所示:
使用Grammarly for Chrome的用戶請及時更新避免被惡意攻擊者劫持導致信息泄露被濫用。
參考鏈接
https://bugs.chromium.org/p/project-zero/issues/detail?id=1527
本文轉載自:逢魔安全實驗室
如若轉載,請註明出處:https://mp.weixin.qq.com/s/rQbJj_yprCFOxQIF1VU6kg##
推薦閱讀:
※視頻會議系統Polycom HDX遠程命令執行漏洞分析
※熱門MySQL開源管理工具phpMyAdmin < 4.7.7 CSRF漏洞
※你的電腦也會中招!英特爾最近的漏洞讓科技界雞犬不寧
※如何檢查開源網站代碼是否留有後門?
※以DLink為例教你如何挖掘漏洞
TAG:漏洞 |