解决DDE注入攻击

作者: Neuro_annie | 来源:发表于2022-06-24 14:53 被阅读0次

很多人很容易忽略的是DDE注入:导出格式为csv,xls时,或许你可以尝试构造这个漏洞,它不会对网站本身产生危害,但会对终端用户造成任意OS命令执行等危害。

Excel解析机制

在Excel任何以'='字符开头的单元格都将被电子表格软件解释为公式,如果我们输入=1+2,则表格会显示为:3
等于'=''+' 减号' - ''@'符号都可用于在Microsoft Excel中触发公式解释,这个可以帮助我们在等号 =被过滤时,使用其他运算符绕过

用户准备导出的Excel表格内容 导出后以'='字符开头的单元格被解析为3
漏洞危害

可以使用= cmd | '/ C calc' !A0弹计算器,或者使用=cmd|'/k ipconfig'!A0弹出ipconfig命令。如果系统可以实现弹框效果,说明我们可以执行任意的js代码,比如:
添加用户
开启任意应用程序:IE
操作注册表
信息泄露,超链接功能 Hyperlink创建快捷方式并进行跳转 等

防御手段
  1. 一般的防御手段为,在生成电子表格时,以任何危险符号开头的字段应该以单引号、撇号(')或空格作为前缀,确保单元格不被解释为公式,但存在可能被绕过的风险
// tableExport.js 部分源码
function preventInjection (str) {
  if (str.length > 0 && defaults.preventInjection === true) {
    var chars = '=+-@';
    if (chars.indexOf(str.charAt(0)) >= 0)
      return ('\'' + str);   // 若查找到以=+-@开头的字符,添加单引号'作为前缀
  }
  return str;
}
单元格前加单引号'防止解析
  1. 更好的防御手段为,根据业务需求控制用户输入为字母数字字符;或黑名单过滤=-号开头的单元格数据,过滤=(-)cmd=(-)HYPERLINKconcat
  1. 通过给导出的td添加style="mso-number-format:'\@'; vnd.ms-excel.numberformat:'\@'",设置单元格为文本格式,可以完美解决代码被解析
<!-- 我是用这种方法解决的 -->
<!-- 首先需要处理的td标签上加上 data-tableexport-msonumberformat="\@" -->
<td data-tableexport-msonumberformat="\@">=1+2</td>
// tableExport.js 部分源码
// 获取td标签上data-tableexport-msonumberformat属性值,并设置style
var tdcss = $(cell).attr('data-tableexport-msonumberformat');
if (typeof tdcss === 'undefined' && typeof defaults.mso.onMsoNumberFormat === 'function')
  tdcss = defaults.mso.onMsoNumberFormat(cell, row, col);
if (typeof tdcss !== 'undefined' && tdcss !== '')
  tdstyle = 'style="mso-number-format:\'' + tdcss + '\';vnd.ms-excel.numberformat:\''+ tdcss + '\'';
此方法将单元格设置为文本格式,完美解决

相关文章

  • 解决DDE注入攻击

    很多人很容易忽略的是DDE注入:导出格式为csv,xls时,或许你可以尝试构造这个漏洞,它不会对网站本身产生危害,...

  • 初识DDE注入攻击

    前言: 之前实习的时候瞟了一眼同事的渗透测试报告,发现有一个对我来说挺新颖的漏洞——CSV注入,各位表哥轻喷哈,既...

  • vue数据绑定

    自动转义,VUE自带,防止注入攻击 解决方法: 动态绑定CSS

  • java编程学习笔记——mybatis SQL注入问题

    SQL 注入攻击 首先了解下概念,什么叫SQL 注入: SQL注入攻击,简称SQL攻击或注入攻击,是发生于应用程序...

  • Office钓鱼攻击之DDE

    通过Windows的office,可以实施许多钓鱼攻击,这里对其中的DDE恶意程序进行钓鱼攻击,通过代码调用受害者...

  • 白帽子讲web安全-注入攻击

    前言 一个安全设计原则:数据与代码分离原则。他就是专门为了解决注入攻击而产生的。 注入攻击的本质,是把用户输入的数...

  • web常见漏洞的成因和修复

    1.SQL注入 漏洞描述:SQL 注入攻击( SQL Injection ),简称注入攻击、SQL 注入,主要用于...

  • 软测教程:什么是sql 注入攻击?什么是跨站脚本?

    SQL 注入攻击是注入攻击最常见的形式(此外还有 OS 注入攻击(Struts 2 的高危漏洞就是通过 OGNL ...

  • 笔记:web漏洞

    SQL注入 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,...

  • php审计之命令注入(敏感函数法)

    PHP脚本中,我们可以对输入进行注入攻击。 注入的种类有很多:命令注入Eval注入客户端脚本攻击跨网站脚本攻击SQ...

网友评论

    本文标题:解决DDE注入攻击

    本文链接:https://www.haomeiwen.com/subject/hngvvrtx.html