0x01 概述
现在很多应用提供了导出电子表格的功能(不限于 Web 应用),早在 2014 年 8月 29 日国外 James Kettle 便发表了《Comma Separated Vulnerabilities》文章来讲述导出表格的功能可能会导致注入命令的风险,因为导出的表格数据有很多是来自于用户控制的,如:投票应用、邮箱导出。攻击方式类似于 XSS :所有的输入都是不可信的。
0x02 公式注入 & DDE
我们知道在 Excel 中是可以运行计算公式的: =1+5,它会将以 = 开头的单元格内容解释成公式并运行,单纯的运行计算公式可能没什么用,但这里可以用到 DDE 。Dynamic Data Exchange(DDE)是一款来自微软的古老技术,它是 Windows 下的一种跨进程通信的协议,支持 Microsoft Excel, LibreOffice 和 Apache OpenOffice。
执行 cmd 弹出计算器:
=cmd|’ /C calc’!A0
当然也可以使用 -cmd ,+cmd 来执行 DDE ,这个问题在2014年进行了修复(CVE-2014-3524),所以我们现在注入命令执行时软件会有如下的提示:
这也就是现在这个漏洞类型的特殊性,虽然软件有着这样的安全风险提醒但仍有大量的厂商承认并修复潜在的漏洞威胁:
https://hackerone.com/reports/90274
https://hackerone.com/reports/111192
…
其中很大的一方面是由于信任域的原因导致用户仍可能受