跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

TeamViewer 13.0.5058中的权限漏洞测试

精选回复

发布于

0x00 前言

12月5日,TeamViewer发布了新版本13.0.5640,修复了之前版本13.0.5058中的一个bug。

随后,盖林在github上上传了该漏洞的POC,安全信息网站ThreatPost也报告了这一情况。

但是这个漏洞的描述和POC乍一看很难理解,所以本文做了进一步的测试,验证POC并得出结论。

概念验证:

https://github.com/gellin/TeamViewer_Permissions_Hook_V1

ThreatPost报告:

https://threatpost . com/teamviewer-rushs-fix-for-permissions-bug/129096/

0x01 简介

本文将介绍以下内容:

概念验证测试

原理简析

利用理念

保护

0x02 POC测试

1、编译生成dll

使用POC C开发,用VS2012编译时会出现以下bug:

错误c 2784:" std:_String_iterator_Mystr STD:operator(_ String _ iterator _ Mystr:difference _ type,STD: _ String _ iterator _ Mystr)":无法从" std:string "更改为" STD:_

bug的位置:

https://github . com/gellin/TeamViewer _ Permissions _ Hook _ V1/blob/master/TeamViewer Hook _ 13 _ 0 _ 3711 _ 88039/main . CPP # L25

出现Bug的原因是作者用了更高版本的Visual Studio来编写。况且这段代码的作用是输出,可以忽略。修改后的代码如下:

Console=new Console(STD:string(BANNER),std:string('TeamViewer权限挂钩v1 ');

编译成功,生成teamviewer hook _ 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(客户端)填写ID和密码,并成功连接到主机1(服务器)

如下图

2-1.png

注:

TeamViewer支持的一个正常功能:主机2(客户端)选择通信-与伙伴切换角色控制,可以切换角色,允许主机1(服务器)依次控制主机2(客户端),如下图所示。

2-2.png

POC的第一个功能是实现主机1(服务器)在没有授权的情况下控制主机2(客户端)。

流程如下:

在主机1(服务器)上,将TeamViewer hook _ 13 _ 0 _ 3711 _ 88039.dll注入到TeamViewer的进程中。

这里可以使用APC注入,代码可以称为:

https://github . com/3g student/Inject-dll-by-APC/blob/master/test . CPP

在dll注入之前,主机1(服务器)点击会话列表,如下图所示

2-3.png

以下dll注入,根据提示输入NUMPAD 1,选择主机/服务器,如下图所示。

2-4.png

再次点击主机1(服务器)的会话列表,列表将被修改,如下图所示。

2-5.png

通过角色切换,主机1(服务器)可以依次控制主机2(客户端)。

4、测试功能B: 主机2(Client)解锁鼠标键盘

在测试a中,主机2(客户端)填写ID和密码,并成功远程连接到主机1(服务器)。

主机1(服务器)通过设置会话列表禁止主机2(客户端)的鼠标远程控制,如下图所示。

2-6.png

正常情况下,主机2(客户端)无法用鼠标远程控制主机1(服务器)。

POC的第二个功能是实现未授权的主机2(服务器),解锁鼠标,远程控制主机1(服务器)

下面的dll注入,根据提示输入NUMPAD 2,选择客户端,如下图所示

2-7.png

成功解锁鼠标,远程控制主机1(服务器),如下图所示

2-8.png

0x03 原理简要分析

通过dll注入,搜索目标进程的内存,找到代表权限的指针地址,重新赋值,执行裸内联钩子修改权限。

修改后的内存结构如下

3-1.png

具体实现方法可以参考源代码。

0x04 利用思路

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

如果主机1(服务器)通过漏洞成功控制了主机2(客户端),那么主机2(客户端)的桌面将默认显示为受控状态。

但由于TeamViewer进程的内存数据可以通过dll注入来修改,所以也可以控制桌面显示内容(如黑屏、正常屏(不推荐)等)。)通过修改存储器数据。

公共POC不实现控制主机2(客户端)的桌面显示内容的功能。考虑到这个漏洞的危害,本文就不介绍POC转换成EXP的具体方法了。

2、功能B: 主机2(Client)解锁鼠标键盘

在主机2(客户端)已经成功远程连接到主机1(服务器)的前提下,只有当主机1(服务器)选择禁用主机2(客户端)的鼠标时,该功能才会起作用。

0x05 防御思路

1.建议用户升级TeamViewer 13.0.5640的新版本。

注:

截至本文撰写时,TeamViewer官网尚未发布此次升级版本的具体内容,地址如下:

https://www.teamviewer.com/en/download/changelog/

2.不要随意连接未知的TeamViewer服务器。

0x06 小结

本文对TeamViewer 13.0.5058中的特权漏洞POC进行了测试,简单介绍了原理和利用思路,并给出了一些防御建议。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。