XSS攻击进阶篇——那些年我们看不懂的XSS

发表于:2017-9-18 15:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:汤夏菁    来源:51Testing软件测试网采编

  2.3 四个重要的DOM属性
  nodeName属性:规定节点的名称。
  nodeName是只读的
  元素节点的nodeName与标签名相同
  属性节点的nodeName与属性名相同
  文本节点的nodeName始终是#text
  文档节点的nodeName始终是#document
  nodeValue属性:规定节点的值。
  元素节点的nodeValue是undefined或null
  文本节点的nodeValue是文本本身
  属性节点的nodeValue是属性值
  nodeType属性:返回节点的类型。
  nodeType是只读的。
  innerHTML属性:获取元素内容,如:
  即text的值为HelloWorld!
  innerHTML可以被赋值,也可读,因此是被引用次数最多的对象属性,同时也是最容易产生安全问题的对象属性。
  2.4 输入一般在哪里
  Location对象属性
  JS通常会通过调用DOM内置对象location来获得用户输入,如引用参数切分可使用location.search,引用完整URL可使用location.href等。
  三.DOMbaseXSS
  3.1两个典型的DOM过程
  1)反射型DOMbaseXSS
  2)存储型DOMbaseXSS
  3.2 需要了解的知识点
  比起常规XSS,DOMbaseXSS的漏洞发现过程更像是代码审计..
  3.3 典型DOMbaseXSS实例
  3.4 mxss
  如果用户输入“出入”DOM两次以上,则有可能触发更高级别的DOMbaseXSS:mXSS
  3.5 容易出现mXSS的场景
  由于innerHTML会将HTML实体,CSS转义字符,ANSI编码等进行反转义,因此原来被转义之后认为安全的用户输入很有可能在绕过过滤器之后被反转回去。
  四.过滤器绕过
  4.1 先来几个栗子
  常规XSS的过滤器绕过
  4.2 过滤器绕过方法
  一般意义上而言,DOMbaseXSS的首先要通过服务端的过滤器清洗一番,然后还要通过页面加载的各个JS脚本,绕过难度相对较大…
  编码绕过:
  我们要插入的代码:<imgsrc=“”onerror=alert(123)>
  HTML5特性:
  4.3XSS修复建议
  不含有富文本编辑器(自定义样式)且没有使用DOM的站点:
  输入:过滤双引号,单引号,左右尖括号,分号。
  输出:对上述字符进行HTML实体编码即可。
  不含有富文本编辑器(自定义样式)但使用DOM的站点:
  输入:在DOM中转义双引号,单引号,左右尖括号,分号。
  输出:在输出之前进行编码,如:innerHTML=encodeHTML(output)
  含有富文本编辑器(自定义样式)但没有使用DOM的站点:
  输入:过滤双引号,单引号,分号。
  输出:对上述字符进行HTML实体编码即可。
  含有富文本编辑器(自定义样式)且使用DOM的站点:
  没办法…指哪儿修哪儿…
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号