標籤:

TeamViewer 13.0.5058中的許可權漏洞測試

0x00 前言

12月5日,TeamViewer發布新版本13.0.5640,修復了之前版本13.0.5058中的一個bug。

隨後,gellin在github上傳了該漏洞的POC,安全信息網站ThreatPost對這個情況作了報道。

但一眼看上去,該漏洞的描述和POC較難理解,於是,本文對其做了進一步測試,驗證POC,得出結論

POC:

github.com/gellin/TeamV

ThreatPost報道:

threatpost.com/teamview

0x01 簡介

本文將要介紹以下內容:

·POC測試

·原理簡要分析

·利用思路

·防禦

0x02 POC測試

1、編譯生成dll

POC通過c++開發,在使用VS2012對其編譯時會出現如下bug:

error C2784: 「std::_String_iterator<_Mystr> std::operator +(_String_iterator<_Mystr>::difference_type,std::_String_iterator<_Mystr>)」:未能從「std::string」為「std::_String_iterator<_Mystr>」推導 模板 參數

bug出現的位置:n

github.com/gellin/TeamV

Bug出現的原因是作者使用更高版本的Visual Studio編寫,況且這段代碼的功能是輸出,所以可以忽略,修改後的代碼如下:

console = new Console(std::string(BANNER), std::string("TeamViewer Permissions Hook v1"));

編譯成功,生成TeamViewerHook_13_0_3711_88039.dll

2、測試環境搭建

主機1(Server):

操作系統:Win8 x86

安裝TeamViewer 13.0.5058

作為被控制端,ID為543 847 147,密碼為49s4eb

主機2(Client):

操作系統:Win8 x86

安裝TeamViewer 13.0.5058

作為控制端,用於遠程連接主機1

3、測試功能A: 主機1(Server)反控主機2(Client)

主機2(Client)填入ID和密碼,成功遠程連接主機1(Server)

如下圖

註:

TeamViewer支持的一個正常功能: 主機2(Client)選擇通信-與夥伴切換角色控制,能夠切換角色,允許主機1(Server)反過來控制主機2(Client),如下圖

POC的第一個功能: 實現主機1(Server)未經授權,反過來控制主機2(Client)

流程如下:

在主機1(Server)上,將TeamViewerHook_13_0_3711_88039.dll注入到TeamViewer的進程

這裡可使用APC注入,代碼可參考:

github.com/3gstudent/In

dll注入前,主機1(Server)單擊會話列表,如下圖

下面進行dll注入,按照提示輸入NUMPAD 1,選擇Host/Server,如下圖

再次單擊主機1(Server)的會話列表,列表被修改,如下圖

選中切換角色,即可實現主機1(Server)反過來控制主機2(Client)

4、測試功能B: 主機2(Client)解鎖滑鼠鍵盤

同測試A,主機2(Client)填入ID和密碼,成功遠程連接主機1(Server)

主機1(Server)通過設置會話列表,禁止主機2(Client)的滑鼠進行遠程控制,如下圖

正常情況下,主機2(Client)無法使用滑鼠對主機1(Server)進行遠程控制

POC的第二個功能: 實現主機2(Server)未經授權,解鎖滑鼠,遠程控制主機1(Server)

下面進行dll注入,按照提示輸入NUMPAD 2,選擇client,如下圖

成功解鎖滑鼠,遠程控制主機1(Server),如下圖

0x03 原理簡要分析

通過dll注入,搜索目標進程的內存,找到代表許可權的指針地址,重新賦值,進行naked inline hook,實現許可權的修改

修改後的內存結構如下圖

具體的實現方法可參照源代碼

0x04 利用思路

1、功能A: 主機1(Server)反控主機2(Client)

如果主機1(Server)通過漏洞成功反控主機2(Client),默認情況下,主機2(Client)的桌面會顯示成被控制的狀態

但是,既然通過dll注入能夠修改TeamViewer進程的內存數據,那麼也能夠通過修改內存數據控制主機2(Client)的桌面顯示內容(例如黑屏、正常屏幕(不推薦)等)

公開的POC未實現控制主機2(Client)桌面顯示內容的功能,考慮到這個漏洞的危害,本文不會介紹POC轉為EXP的具體方法

2、功能B: 主機2(Client)解鎖滑鼠鍵盤

利用前提為主機2(Client)已經成功遠程連接主機1(Server),當主機1(Server)選擇禁用主機2(Client)的滑鼠時,該功能才會發揮作用

0x05 防禦思路

1、建議用戶升級TeamViewer新版本13.0.5640

註:

截止本文編寫,TeamViewer官網尚未發布該升級版本的具體內容,地址如下:

teamviewer.com/en/downl

2、不要隨意連接未知的TeamViewer伺服器

0x06 小結

本文對TeamViewer 13.0.5058中的許可權漏洞POC進行測試,簡要介紹原理和利用思路,給出防禦建議

本文為 3gstudent 原創稿件,授權嘶吼獨家發布,未經許可禁止轉載;如若轉載,請聯繫嘶吼編輯: 4hou.com/vulnerable/924 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

iPhone 手機被鎖,如何快速解鎖?
如何發現Active Directory中的隱身管理員賬戶(二)

TAG:信息安全 |