XSS(DOM)

XSS(DOM)

前言

讲道理,现在我对XSS(DOM)的原理还是很迷啊,不看下js和前端的知识感觉还是很迷,不是很懂。

但是我觉得练习还是可以做的,因为看过一些大佬的文章后,感觉有成为脚本小子的能力了…

XSS的原理分析与解剖(第二篇)

这篇文章前面xss反射型的时候就引用过,里面有一段介绍xss dom的,我感觉原理说的也不是很清楚,但看了它的例子后大概知道怎么去搞了…

练习

Low

1

这里GET传参,把参数改为我们的payload就成功了,感觉和反射型有点像…

这里用我们xss平台的payload也是能成功的

Medium

这里它过滤了<script>标签,所以我们很自然的会尝试<img>等标签

下图我们可以看到我们改为<img>标签后,返回是和我们用<script>标签时不一样的,script标签会转到缺省值,这里我们可以看到我们输入法人img标签时没有被过滤的

2

我们查看源代码,可以看到img被当做字符串插入进值里面去了

所以我们需要闭合标签 ></option><img src=1 οnerrοr=alert(1)>//

结果没有成功…作为菜鸡的我傻眼了…

3

然后我查了下发现说把<script>一起闭合的就好了…

</option></select><img src=1 οnerrοr=alert(1)>

4

可以看到确实弹窗了…

5

看源码可以看到value里面也是插入值了的,但后面也还有…菜鸡懵逼,前端这一块真的不熟…

找了下,发现源码里有一段js代码有说,这里闭合标签是下面这样的格式

<option value=’ " + lang + " '> " + decodeURI(lang) + " </option>

这里主要参考:DVWA之DOM XSS(DOM型跨站脚本攻击)

然后前面没闭合成功,我的理解就是前面的<option>闭合成功了,然后html的机制把后面的当错误语句抛弃了?但后面成功了又解释不通了…还是抓紧时间看前端吧…

好的我知道原因了…select标签内只允许内嵌option标签,而option标签中能内嵌script标签但不能内嵌img等标签,所以我们要闭合opion,script标签

这里xss平台也测试成功

High

high是真的挺难的,可以看到下图,有限制很强的白名单机制,没记错文件包含漏洞中impossible级别就是这样的限制

6

这里我是真不会,看了下一些大佬们的博客,大佬们说这里你要想办法让你的代码在本地运行不会去服务器被处理(我觉得这也是DOM的核心思想吧,不用理会服务端,专心的和本地js斗智斗勇)

应用#号,URL栏的#号之后的内容并不会发送至服务器端,JS应用该符号实现在页面创建加载过程中定向到指定的页面内容上

7

可以看到成功弹窗。

xss平台也测试成功

这里参考:通过DVWA学习DOM型XSS

Impossible

这里进行了url编码,没有解码直接赋值给option标签了

这里不会将经过URL编码的内容再进行URL解码

具体也可以参考上面的博客

总结

练习完后还是很迷,对DOM确实不是很理解

而且练习完后确实感觉很难利用,和反射型一样并不太好利用

在反射型和存储型xss中。你可以在服务器的返回网页中看到xss payloads。但是在dom based xss中,html源码和攻击后返回的网页完全相同,比如在返回中找不到payloads。只有在动态运行或调查网页的dom树时才能观测到dom xss。

上面这段话我感觉我能真正理解的时候就算对dom xss有所理解了

参考

  1. 通过DVWA学习DOM型XSS
  2. DVWA之DOM XSS(DOM型跨站脚本攻击)
  3. Mi1k7ea (大佬的博客,感觉很好)
  4. DOM-based XSS 与存储性 XSS、反射型 XSS 有什么区别? (逼乎里面有的解释也很好)
发布了54 篇原创文章 · 获赞 22 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_26406447/article/details/89844287
今日推荐