有关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版本问题吧。

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

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

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

DOM XSS的原理与防护

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

DOM-based XSS 与 存储性XSS、反射型XSS有什么区别?

http://www.zhihu.com/question/26628342 单单解释三者的区别,似乎有点单调。说到xss,就必须要提一提js,脱离了js去谈xss都是耍流氓! 1,)先来...
  • xysoul
  • xysoul
  • 2015年05月26日 20:20
  • 2321

DVWA下的XSS

DVWA下的XSS
  • NWC2017
  • NWC2017
  • 2017年07月25日 17:33
  • 266

【xss】dvwa平台下的实战

课堂上要求学生自由组队准备一个安全相关的主题讲解,于是会兴冲冲的找到学霸想抱大腿。最近应大腿的需求,决定要补充ppt一部分内容以掩盖我们打酱油的真面目,大胖这里是学霸的外号的意思是一个酱油的技术点太酱...
  • Nightsay
  • Nightsay
  • 2015年05月19日 00:29
  • 2734

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

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

DOM-Based XSS

无论怎样,DOM 的XSS攻击需要小心再小心,最好能在客户端做一个过滤。 这个在服务器端解析时,竟然只能解析一个name? http://www.vulnerable.site/welcome.htm...
  • buptisc_txy
  • buptisc_txy
  • 2010年05月18日 20:55
  • 2449

运营一点思考

今天阅读互联网运营书籍的时候,忽然看到作者分享了一个案例,主要讲用户群的消息推送问题。作者是做课程培训的,有学员群,作者的同事在群中推送了一条消息,主要是介绍课程的信息,内容大致主要是有哪些领域中的大...
  • leanln
  • leanln
  • 2018年01月08日 23:41
  • 26

Java的第一个程序与XSS简介

今天早上7点钟起床就去实验室了,到中午12点多,早上7:30到9点这段时间在楼顶看书(因为热的原因);9:10-11:10整理今早的笔记,11:10-12:00搭建Java开发环境!因为这个Java一...
  • hard_lushunming
  • hard_lushunming
  • 2015年08月11日 10:11
  • 422

关于XSS的一点思考

http://tmxk.org/forum.php?mod=viewthread&tid=256 最近总是无意中间发现一个XSS,而且都是比较大的。 XSS的字面意思大家都知道,可是它到底是那...
  • SalmonellaVaccine
  • SalmonellaVaccine
  • 2013年10月29日 16:34
  • 669
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:有关DOM XSS的一点思考
举报原因:
原因补充:

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