专栏首页FreeBufCVE-2017-4918:VMware Horizon的macOS客户端代码注入漏洞分析

CVE-2017-4918:VMware Horizon的macOS客户端代码注入漏洞分析

本文我们将探讨如何通过 VMware Horizon macOS客户端版本4.4.0 (5164329)中存在的代码注入漏洞获取本地root权限。在此文发布前我们已确认漏洞在最新版本中已被修复,该漏洞是在我学习了解“Open VMware View Client Services” SUID机制后发现的。

该漏洞存在于Horizon内部的远程USB服务,且仅在键入管理凭证启动服务之后才能利用

为了进一步研究,我使用到Fireeye最新发布的Monitor.app应用程序,该程序主要用于macOS上的进程监听(procmon)

从Monitor.app捕获到的结果,可以清楚得知services.sh被包装在Open VMware View Client Services之中。这样脚本文件的SUID位被忽略也就说得通了(参考Allow setuid on shell scripts)。

在仔细观察该脚本文件之后,我辨识出如下截图中代码高亮部分或许就是代码注入漏洞的起点。尽管我对./vmware-usbarbitrator的内部工作原理不了解,但这些代码深深的吸引了我的目光。作为一个非管理员用户,我能够设置环境变量VMWARE_VIEW_USBARBITRATOR_LOG_OPTIONS的内容(在之后的一个SUID执行脚本中会用到)

在仔细阅读命令行参数选项说明后,我非常肯定我们是能够通过–kext参数加载一个自定义内核扩展。

但接下来我们将面临2个问题:

  • 内核扩展仅在root : wheel权限下加载
  • 此外,KEXTs必须有苹果公司的签名

经过一系列思考,我决定忽略第二个问题。因此,我禁用了SIP

接下来我们就着重关注第一个问题。为了成功加载一个内核扩展,该二进制文件必属于root : wheel。然而,对于一个普通用户来说,是无法在本地文件上设置该文件系统权限的。幸运的是,在这之前我有花时间去了解Tools On Air文件系统的输入输出原理,所以我清楚的知道我们只需利用NFS便能达到目的。NFS允许服务指定文件系统权限,即使是由一个普通用户进行挂载。我所知道的其他本地或者远程文件系统从某种程度上来讲,都会忽略root用户所属文件权限。我们的下一个动作即是引用一个远程文件夹(我随身携带的Kali Linux)以利用NFS。

使用Finder的“连接到服务器”功能进行挂载

接着创建一个简单的KEXT

之后更新Info.plist文件以满足我们的需求(新增一个IOKitPersonalities字典),我已经准备好了!

通过将KEXT复制到NFS服务器,之后进行权限调整以满足root:wheel,至此我们便能够愉快的开始真正的利用了。

在我们之前创建的KEXT中简单设置VMWARE_VIEW_USBARBITRATOR_LOG_OPTIONS环境变量,然后运行Open VMware View Client Services。现在能够成功加载了。

至此,我们作为一个普通用户拿下内核环境的代码执行权限。

解决方案

过滤或者清除环境变量VMWARE_VIEW_USBARBITRATOR_LOG_OPTIONS以及VMWARE_VIEW_USBD_LOG_OPTIONS

本文分享自微信公众号 - FreeBuf(freebuf),作者:鸢尾

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 扎克伯格谈剑桥分析事件:我们犯了错

    Facebook首席执行官马克扎克伯格周三评论剑桥分析公司事件,他承认公司犯了错误。 Facebook首席执行官马克扎克伯格周三评论了剑桥分析事件,他承认Fac...

    FB客服
  • 一文入门Android逆向

    本文节主要介绍一下Android逆向常用的环境、工具、动静态分析思路,笔者通过学习肉丝大佬分享的一些内容,加上自己一些经验总结而来。

    FB客服
  • 间谍软件潜入Google Play

    研究人员发现了第一个已知的间谍软件,它建立在Ahmyth开源恶意软件的基础上,并绕过了谷歌的应用审查过程。这个恶意的应用程序叫做RadioBalouch,又称R...

    FB客服
  • 动态 | Facebook 开源高速大规模图嵌入工具 PBG

    AI 科技评论按:如何有效处理大规模图像,对于推动人工智能研究与应用的发展而言至关重要。这也是为何 Facebook AI 选择创建并开源 PyTorch-Bi...

    AI科技评论
  • 动态 | Facebook 开源高速大规模图嵌入工具 PBG

    AI 科技评论按:如何有效处理大规模图像,对于推动人工智能研究与应用的发展而言至关重要。这也是为何 Facebook AI 选择创建并开源 PyTorch-Bi...

    AI研习社
  • Allegro使用技巧(1)----orCAD和allegro交互布局

    1、打开原理图和 PCB, 在 OrCAD 中 Option–Preferences 设置 Miscellaneous,如下图:

    小火柴棒
  • 性能测试入门-LoadRunner测试场景

    3、Global Schedule---Group(用户组),设定百分比模式,选择脚本后,按如下选择,在弹出的弹框中点击YES,即可

    用户6367961
  • [揭秘]基于磁盘数据的电子取证过程详解

    大数据文摘
  • flutter组件【1】:Navigator的使用

    sinnoo
  • PaperReading-用能力感知神经网络提高人岗匹配效果

    抛开这篇论文,我们先谈一谈人岗匹配这件事到底在做什么,做哪些难点。 一家大公司,一旦发布了某招聘需求,往往每天会有成千上万封简历飞来应聘。HR需要从这成千上万封...

    beyondGuo

扫码关注云+社区

领取腾讯云代金券