有关DOM XSS的一点思考

原创 2016年08月30日 21:26:31

前段时间发现了某站的一个DOM XSS漏洞,发到补天说无法复现,我开始琢磨其中的问题。

我们首先大致还原一下场景:

例子一:

<!DOCTYPE html>
<html>
<head>
    <title>xss test</title>
</head>
<body>
    <div id="xss">
    </div>
</body>
<script type="text/javascript">
    var a = document.location.href;
    document.getElementById("xss").innerHTML="<a href="+a+">test</a>";
</script>
</html>

然后,我们用chrome在本地打开这个网页,并在地址后面加上#"><img src=@ onerror=alert(1)>,刷新页面,弹窗了。

为什么? 因为chrome对#之后的部分不进行任何的urlencode处理,但是火狐就会进行编码,所以以上弹窗在chrome及大多数浏览器下都能实现。

但是我们换个输出方式呢:

例子二:

<!DOCTYPE html>
<html>
<head>
    <title>xss test</title>
</head>
<body>
</body>
<script type="text/javascript">
    var a = document.location.href;
    document.write("<a href="+a+">test</a>");
</script>
</html>

结果还会弹窗吗?答案是不会,chrome虽然没有对其进行urlencode编码,但是却这个脚本却会被Chrome XSS Filter拦截,按F12可以看到错误报告。只是输出的语句不同,为什么却有这个区别呢?document.write这个语句是一般的文本输出,我猜想Chrome对innerHTML这个语句的限制不会有这么严格,顾名思义,人家这个语句的名字就可以看出来是为了输出HTML标签的,浏览器或许为了保证正常的DOM解析而没有对它进行太过严格的过滤,这只是我的一个猜想。

我们继续研究第一个例子,这次我们在地址后面加上 #"><script>alert(1)</script>,再次刷新,会弹窗吗?答案是不会。

我们按F12查看源代码,发现<script></script>已经被视为标签了,但脚本内容却没有执行,很显然被XSS Filter拦截了,看来谷歌的这个东西对DOM XSS还是有一点作用的,明显的标签的确逃不过。

总结一下,第一个例子中的漏洞应该是确实存在的,但只是不能用<script> 标签触发,我不明白补天为什么会说无法复现,或许chrome版本问题吧。

版权声明:本文为博主原创文章,未经博主允许请尽情转载。

DomXSS以及绕过浏览器检测机制方法总结

今天继续研究了一下PKAV“心伤的瘦子”的XSS系列教程,收获挺大的,这里主要记录下来,以备忘记! 下面是这个系列教程的截图,可以在这里看到,当让,每一个知识知识点,都可以在这里(传送门)得到复现。...

关于DOM型XSS漏洞的学习笔记

DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。 DOM型XSS其实是一种特殊类型的反射型XSS,它是...
  • SKI_12
  • SKI_12
  • 2017年03月05日 16:14
  • 5293

DOM XSS的原理与防护

前言 首先这里为什么要讨论DOM XSS而不是比较常见的反射型XSS和存储型XSS,因为基于DOM XSS原理和利用场景,服务端过滤及客户端转义的防护手段并不能完全适用于DOM XSS。 DOM ...

Xss 学习(三)之dom

一、什么是dom? DOM 是 W3C(万维网联盟)的标准。DOM 定义了访问 HTML 和 XML 文档的标准: W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和...

基于QtWebKit的DOM XSS检测技术

1、前言 1.1 什么是DOM XSS        DOM-based XSS是一种基于文档对象模型(Document Object Model,DOM)的XSS漏洞。简单理解,DOM ...

DOM4J的一点小案例

  • 2012年09月09日 23:36
  • 2KB
  • 下载

【每天学一点】JAVA-DOM4J&XPath的XML处理

前2天大概翻了下SE,今天开始看了下DOM4J关于XML的处理,发现java真是一个挺好用的工具呢。明天考6级,果然还是随缘过了,反正……应该不重要吧!!!!!   1.关于读取XML的操作//基本...

又学习一点php垃圾回收机制之simple_html_dom库

每一种计算机语言都有自己的自动垃圾回收机制,让程序员不必过分关心程序内存分配,php也不例外,但是在面向对象编程(OOP)编程中,有些对象需要显式的销毁;防止程序执行内存溢出。  一、PHP 垃圾回...
  • yzgxcm
  • yzgxcm
  • 2014年11月05日 11:18
  • 453

Coverity面向脚本语言的静态分析(1)- Javascript前端/服务器端的XSS/DOM_XSS

今天用Javascript来聊聊脚本语言的静态分析技术,工具仍为Coverity,静态分析的好处就不多说了,简单扼要的介绍就是能够直接定位到源代码中的质量与安全问题。 首先Coverity获取Java...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:有关DOM XSS的一点思考
举报原因:
原因补充:

(最多只允许输入30个字)