【转载】再谈CSV注入攻击

前言:由于工作原因,很久没有更新博客了,总算忙完这一阵了,赶紧更新下博客。这几天我遇到了csv注入的漏洞,但是种种原因不能把我遇到的案例写上来,我就转载一篇文章作为记录吧。 从某些方面来说,CSV注入漏洞是一个老漏洞了,但是在其他方面……好吧,我想几乎没有人意识到这个漏洞的破坏性有多大并且这个漏洞无处不在。我曾经看到的很多应用程序都可以使用一些攻击向量来进行CSV注入,这些应用程序需要用户输入一些数据,并允许管理员将这些数据批量导出到CSV文件中。 CSV注入漏洞的确与每一个应用程序都有关。 值得一提的是, 2014年的一篇文章中已经提到了我的这篇文章讨论到的一些攻击向量。当然还有另一篇文章也讨论了CSV注入漏洞。 所以让我们来设置一个场景 – 想像一个时间或标签跟踪应用程序。用户输入他们的时间(或标签),但是不能看到其他用户输入的内容。然后,网站管理员将数据导出到csv文件中并用电子表格应用程序中打开它。这些操作看起来很正常很规范,没什么不对的。 攻击向量1 CSV文件我想大家都很了解。它最大的特点就是这种文件的结构很简单。这些导出的数据可能看起来像下面这样: UserId,BillToDate,ProjectName,Description,DurationMinutes 1,2017-07-25,Test Project,Flipped the jibbet,60 2,2017-07-25,Important Client,”Bop, dop, and giglip”, 240 非常的简单,并且文件内容没有什么危险的东西在里面。甚至按照RFC文档的规范来说,CSV文件包含的数据也不会造成什么危害: 为了好玩一点,让我们尝试修改一下数据,内容修改如下: UserId,BillToDate,ProjectName,Description,DurationMinutes 1,2017-07-25,Test Project,Flipped the jibbet,60 2,2017-07-25,Important Client,”Bop, dop, and giglip”, 240 2,2017-07-25,Important Client,”=2+5″, 240 嗯…看起来很奇怪。尽管单元格里的文本内容被包含在引号中,但它似乎被解释为一个公式了,就是因为第一个字符是一个等号(=)符号。事实上,在Excel表格里,任何运算符(=、-、+、@等)都能够触发这样的行为,这也是最先引起我注意的地方。这个比较神奇,不过此时还没有产生什么危害。 好吧,看起来一个数据公式就是一种可执行的代码。因此,用户可以让代码(也就是数学公式)在管理员机器上的用户的安全上下文中进行执行。…

Continue Reading →