DOM型XSS
DOM其实是一种特殊的反射型XSS,它是面向于DOM文档的模型的漏洞。DOM的整个过程都是在前端完成的,没有后端的参与(纯前端的操作!),所以该类型的XSS漏洞比较鸡肋,没有太大作用。所以本篇文章就简单用几个实例来学习一下。(不懂DOM是什么的师傅可以看看第一篇XSS文章,这里就不再重复介绍。)
DOM型XSS实战
来到DVWA的DOM型XSS关卡
我们可以看到传入参数的值在DOM节点上显示出来了,那我们可以再试一试其他的东西。
因为是最低等级,源代码上也没有任何防护措施
那我们可以构造我们的payload
<script>alert("随风")</script>
其他等级也就是绕过不同的防护措施,这里我们就一一的去分析一下他们的源代码。
Medium 等级
这里有一个关键函数stripos()
- stripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
这里检查了字符串第一次出现是否为<script,是的话让default=english,因为该函数不区分大小写,所以我们不能通过大小写进行绕过了。所以我们用以下payload
<img src=1 οnerrοr=alert('随风')>
但是发现并未触发任何弹窗
这种时候一般都是因为插入到某个标签,导致标签闭合失败。那我们可以查看以下代码。
这里插入到value值里面了,所以我们最终的payload是
</option></select><svg/onload=alert("随风")>
high等级
这里用了一个switch函数定义了一个白名单,在名单里面的才能传入参数。但是在url中#后边的内容不会发送到服务端,从而可以实现绕过。
English #<script>alert('随风')</script>