当前位置:   article > 正文

DOM-based型XSS_dom-based型xss攻击

dom-based型xss攻击

DOM-based型XSS
这种类型的XSS并非按照“数据是否保存在服务器端”来划分,DOM Based XSS从效果上来说也是反射型XSS。单独划分出来,是因为DOM Based XSS的形成原因比较特别,发现它的安全专家专门提出了这种类型的XSS。出于历史原因,也就把它单独作为一个分类了。通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。
我们客户端的js可以对页面dom节点进行动态的操作,比如插入、修改页面的内容。比如说客户端从URL中提取数据并且在本地执行、如果用户在客户端输入的数据包含了恶意的js脚本的话,但是这些脚本又没有做任何过滤处理的话,那么我们的应用程序就有可能受到DOM-based XSS的攻击。
为了更好地理解,通过实例来演示:我们直接进入pikachu平台进行演示:
我们随便输入一些数字作为试探信息,发现它回应了what do you see这句话。
在这里插入图片描述

图3.9 进入pikachu平台,输入试探性信息
通过试探性信息,我们可以知道输入点。如进入源代码页面,搜索一下what do you see,我们可以定位到这个地方。
在这里插入图片描述

图3.10 成功定位输入点
发现就是我们演示反射型XSS的方法,它把我们输入的东西赋值给了str,之后又通过字符串拼接的方法将我们的输入写到了a标签的href里面,那么接下来,我们如何去确认这个地方是否有XSS漏洞,他的输入点就在页面的input里面,那么输出点在哪呢?
之前我们说过输出都是在后台返回来输出的,但这里不同,这里在前面的input里面获取输入后,直接在dom的getElementById给获取下来,在下面的div中输出。
在这里插入图片描述

图3.11找到输出点
而且我们发现,在输入和输出的过程中,他是没有做任何的转义操作的
那么我们将这一段复制下来,去构造一个闭合。
在这里插入图片描述

3.12 有构造XSS Payload的机会
根据这段代码我们就能发现,中间str的部分便是我们可以控制的部分,之后我们在这中间构造闭合,比如我们可以去弹个窗。
构造如下数据:#’ οnclick=“alert(‘dom-xss’)”>,输入后,页面代码就变成了:’>what do you see?
首先用一个单引号闭合掉href的第一个单引号,然后插入一个onclick事件,最后再用注释符”注释掉第二个单引号。点击这个新生成的链接,脚本将被执行:
在这里插入图片描述

图3.13 成功构造XSS Payload
在这里插入图片描述
图3.14 DOM 型XSS 攻击成功
虽然这个地方刷新一下的话就没了,但其实这个地方也就是一个很低级的前台DOM,不与后台去进行交互的一个漏洞,前端的dom千奇百怪,谁也不知道程序员会怎么写这个dom呢?
我们再从pikachu平台上来看一下下面要演示的dom。
在这里插入图片描述
图3.15 dom-XSS测试平台
我们随意输入8888时,按请说出你的伤心往事这个键就是显示图3.15中蓝色字体那部分,而那个就是我们要找的输入点。
在这里插入图片描述
图3.16 找到输入点
通过输入点,继续来看到后台源码的逻辑,最后发现这里有我们熟悉的闭合
在这里插入图片描述
图3.17 找到闭合点
所以我们接着输入刚才的构造payload,然后进行输入payload。#’ οnclick=“alert(‘dom-xss’)”>
在这里插入图片描述
图3.18 通过输入payload进行攻击
发现又出现了一句话,当我们通过点击它,然后发现弹框了。
在这里插入图片描述
图3.19 dom型XSS攻击成功
我们这边也发现了在url上的提交,也就是说,我们如果把这段代码发给别人,就可以造成一些危害。
http://localhost:8081/pikachu-master/vul/xss/xss_dom_x.php?text=%23%27+onclick%3D%22alert%28%27dom-xss%27%29%22%3E#
通过以上两个例子,我们知道浏览器用户可以操纵DOM中的一些对象,例如URL、location等。用户在客户端输入的数据如果包含了恶意JavaScript脚本,而这些脚本没有经过适当的过滤和消毒,那么应用程序就可能受到基于DOM的XSS攻击。而且在HTML标签中,有些标签是不会解析的,例如:,,,,,,。其虽然与反射型XSS很相似,通常需要诱导用户访问精心构筑的URL来执行脚本,但DOM型XSS攻击样式更多,而且还可以在用户浏览本地执行,它的危险更大,也更难防御。我们只能在输入点过滤敏感关键字和输出点进行innerHTML=encode<br/> HTML([输出])。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/335370
推荐阅读
相关标签
  

闽ICP备14008679号