XSS原理分析绕过及利用思路

Posted 网安成长笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XSS原理分析绕过及利用思路相关的知识,希望对你有一定的参考价值。

目录

前言

XSS漏洞原理

DOM XSS详解

XSS过滤绕过

XSS进阶攻击方式


0x01 前言

    好久没更了,最近一直在忙别的事情,接下来会不定期更新,每一篇文章力求干货,谢谢支持。


0x02 漏洞原理

    之前的项目每次做到xss漏洞验证就结束,对于漏洞的利用一直没有深入研究,前几天经过前辈指点发现自己对于DOM XSS等一些漏洞原理了解有些出入,所以打算把原理重新梳理一下,结合漏洞利用过程能在脑海中有一个清晰的概念。

XSS漏洞原理:

    通过对网页注入了可执行的代码,并导致代码执行,就形成了XSS攻击。

   XSS按形式分为:反射XSS,存储XSS,按照触发介质分为JSXSS,FLASHXSS,按照接口分为DOM XSS以及非DOM XSS。


    有些人认为XSS分类就是反射XSS,存储XSS,DOMXSS三种,但是实质上并没有这种分类,因为这三种XSS并没有相同的分类依据。之前我一直想不明白DOM和反射型到底区别在哪里,现在来看其实没办法区分,可以说反射型XSS包含了DOM base XSS,只不过DOM base XSS触发在DOM中。


0x03 DOM base XSS详解

    DOM(文档对象模型)是由W3C定义的访问html和XML文档的标准,可以把它简单的理解成就是一个可以访问的库,库中包含各种标签(html,head,body等),JS可以非常方便的对标签的值进行调用。而DOM中的某些对象是可以被客户端控制修改的,比如url、location等,DOM base XSS就是通过DOM对象实现的攻击,由于DOM是前端直接呈现的,所以发生在客户端,不与服务端进行交互。这里通过pikachu的环境做一个演示, 输入xss,点击,发现输入框下面出来一个可以点击的内容what do you see?,看一下源码发现输入内容作为href指向的内容

XSS原理分析、绕过及利用思路

构造一个简单的payload

XSS原理分析、绕过及利用思路

分析一下这个payload:

#' onclick="alert(123)"


无论我们正常输入还是构造了payload输入,通过源码可以发现都是在<a>标签内,正常输入xss时标签内内容是

<a href="xss">what do you see?</a>


当我们点击的时候会跳转到当前目录的xss目录下,但是我们需要触发XSS,所以这里使用#号,#在HTML中被解析为锚点,不设置其他锚点的情况下默认#指向页面TOP位置。接着使用双引号闭合标签,这时候发现payload没办法触发,找到源码看一下

XSS原理分析、绕过及利用思路

发现href内容是使用'闭合,所以构造的payload也需要用单引号闭合,接着添加一个点击的事件onclick="alert(123)"

这时候可以在页面中看到a标签内容为

<a '="" onclick="alert(123)" href="#">what do you see?</a>


成功触发。


0x04 XSS过滤绕过

1.大小写绕过

    例如:

<script>alert(xss)</script>

,使用大小写绕过为

<ScrIPt>AleRT(Xss)</sCRipT>

2.url编码绕过

    将传递的参数内容进行url编码

%31%32%33%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%22%78%73%73%22%29%3C%2F%73%63%72%69%70%74%3E

XSS原理分析、绕过及利用思路

3.HTML实体编码绕过

    在过滤了特殊符号的情况下,可以尝试进行HTML实体编码绕过,例如:

<script>alert(xss)</script>

使用HTML实体编码为

&lt;script&gt;alert(xss)&lt;/script&gt;

4.unicode绕过

    使用JS的fromCharCode()方法,将内容转换为unicode,例如:

<script>alert(xss)</script>


转换为

<script>alert(String.fromCharCode(120, 115, 115))</script>


测试中我把alert函数进行unicode编码之后,没有被解析,对payload部分进行unicode才会正常弹窗,但是在script脚本包含内讲道理应该都能被执行,后面会再结合浏览器解析原理进行研究,再发一篇文章。

XSS原理分析、绕过及利用思路

5.标签绕过

    除了直接使用<script>标签外,还可以使用其他标签引用JS,如img或embed,标签可以配合onerror等事件函数执行js。常用的事件函数还有onmouseover,onload等,alert被过滤还可以使用confirm,prompt函数。

<img src=1 onerror="alert(document.cookie)">

XSS原理分析、绕过及利用思路

实际中我们可能遇到不同的触发点位置,仔细观察触发点标签位置,尝试黑名单绕过,构造payload

其他绕过方式,可参考

https://blog.csdn.net/free_xiaochen/article/details/82289316

http://blog.nsfocus.net/xss-advance/


0x05 XSS利用方式

    之前做的项目一直停留在cookie方面,虽然cookie简单又直接,但是总感觉对于XSS这个漏洞利用方式了解太少。

XSS跳转

图片点击跳转

payload:

<img onclick="window.location.href='http://www.h0r2yc.cn'" width='300' src='http://www.h0r2yc.cn/avatar.png'/>

JS劫持跳转

payload:

<script>window.location.href="http://www.h0r2yc.com";</script>

JS被执行后直接跳转


0x06 小结


   

参考资料

https://www.anquanke.com/post/id/156377?appinstall=0

https://blog.csdn.net/free_xiaochen/article/details/82289316

https://www.hackersb.cn/hacker/85.html

http://blog.nsfocus.net/xss-advance/

https://blog.csdn.net/dongxie_tk/article/details/78529717

以上是关于XSS原理分析绕过及利用思路的主要内容,如果未能解决你的问题,请参考以下文章

(2020上半年第18天第19天第20天合集(上传-实例测试上传-WAF绕过XSS跨站-原理分析)之演示③xss跨站实战演示)小迪网络安全笔记

通过脚本片段绕过XSS防御

XSS的原理分析与解剖:第四章(编码与绕过)*******************未看**********************

独家分析:安卓“Janus”漏洞的产生原理及利用过程

XSS原理及代码分析

如何利用XSS脚本攻击绕过WAF防火墙