標籤:

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的厲害之處請戳:youtu.be/wOxVMRwLfjU

漏洞分析

從網路上下載老版本的擴展插件,這裡我們使用最新版之前的一個版本14.825.1439(這裡有所有版本crx4chrome.com/history/

),然後解壓插件包,主要代碼都在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中執行幾行代碼即可觸發漏洞,如下圖所示:

下面來解釋一下這四行代碼的意思:

  1. 將當前DOM中的節點元素置為可編輯狀態(默認不可編輯);
  2. 返迴文檔中匹配指定的選擇器組的第一個元素,這裡返回[data-action=」editor」]的節點元素並執行點擊操作;
  3. 返回class=gr_-ifr的iframe節點元素對象,再通過contentWindow得到iframe包含頁面的window對象,最後將此對象註冊到一個指定的監聽器上,當該對象觸髮指定的事件message時,回調並執行匿名函數;
  4. 通過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的用戶請及時更新避免被惡意攻擊者劫持導致信息泄露被濫用。

參考鏈接

bugs.chromium.org/p/pro

本文轉載自:逢魔安全實驗室

如若轉載,請註明出處:mp.weixin.qq.com/s/rQbJ

推薦閱讀:

視頻會議系統Polycom HDX遠程命令執行漏洞分析
熱門MySQL開源管理工具phpMyAdmin &lt; 4.7.7 CSRF漏洞
你的電腦也會中招!英特爾最近的漏洞讓科技界雞犬不寧
如何檢查開源網站代碼是否留有後門?
以DLink為例教你如何挖掘漏洞

TAG:漏洞 |