TeamViewer 13.0.5058中的权限漏洞测试
source link: https://3gstudent.github.io/3gstudent.github.io/TeamViewer-13.0.5058%E4%B8%AD%E7%9A%84%E6%9D%83%E9%99%90%E6%BC%8F%E6%B4%9E%E6%B5%8B%E8%AF%95/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
TeamViewer 13.0.5058中的权限漏洞测试
0x00 前言
12月5日,TeamViewer发布新版本13.0.5640
,修复了之前版本13.0.5058
中的一个bug。
随后,gellin在github上传了该漏洞的POC,安全信息网站ThreatPost对这个情况作了报道。
但一眼看上去,该漏洞的描述和POC较难理解,于是,本文对其做了进一步测试,验证POC,得出结论
https://github.com/gellin/TeamViewer_Permissions_Hook_V1
ThreatPost报道:
https://threatpost.com/teamviewer-rushes-fix-for-permissions-bug/129096/
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出现的位置:
https://github.com/gellin/TeamViewer_Permissions_Hook_V1/blob/master/TeamViewerHook_13_0_3711_88039/main.cpp#L25
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注入,代码可参考:
https://github.com/3gstudent/Inject-dll-by-APC/blob/master/test.cpp
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官网尚未发布该升级版本的具体内容,地址如下:
https://www.teamviewer.com/en/download/changelog/
2、不要随意连接未知的TeamViewer服务器
0x06 小结
本文对TeamViewer 13.0.5058中的权限漏洞POC进行测试,简要介绍原理和利用思路,给出防御建议
Recommend
-
89
Left my computer on and afk for a few hours with a bunch of tabs and a TeamViewer session opened, came back to a video driver crash and display not working. Well this would explain why. Left my computer on and afk for a few hours with...
-
69
[Update] TeamViewer 13 DanielStm Posts: 224 Staff member 🤠
-
93
软件类型:简体中文/国产软件/免费版软件类别:国产软件-网络软件-远程控制支持系统:Win all提供支持与协助,并与他人互动合作;彼此交换信息;为您节省差旅时间和费用,借助TeamViewer,一切所需都近在眼前。..
-
118
程序员 - @cjmkt -
-
99
全球工单系统 - @suit - 昨天用的时候也是各种连不上服务器,又是搭梯子又是换手机流量,还是死活登录不了,后面不知道怎么的忽然又可以了今天又出问题,在新设备登录必须要到他们官网授权,但是授权连接一直打不开,到现在还没好,
-
50
程序员 - @AllOfMe - 最近用 Teamviewer 老是被 B,说有商业用途,只能不断的换台机子换个帐号重复来。有时候 Teamviewer 连接不稳定,移动网老是不行,用不了等等。 当然没有出钱买服务,也不能要求
-
67
问与答 - @lotina69 -
-
84
Teamviewer会根据一套算法检测当前是否用于商业用途,可能根据在线时间,是否跨网段远程访问,当前操作系统是否为专业或企业版,以及其他因素进行检测,具体算法不得而知,不过有时明明只是个人非盈利目的使用,却弹出下面的对话框,在1到5分钟后就会自动断开,然...
-
84
宽带症候群 - @iloveyouso - 今天中午尝试登录,但是弹出怀疑商用的模态框之后,有变成了准备连接的绿字,没有任何提示。在手机端尝试登录,提示登录取消。。。 大家有遇到这个情况吗?
-
36
程序员 - @5200 - >之前使用**Teamviewer**来远程公司电脑,结果后面连接时间长了被说商用了。免费版还时不时有广告 然后后面改用**anyDesk**,发现连接速度时好时坏,而且远程输入文字的时候屏幕内
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK