【附靶场】WEB常见漏洞之XSS(靶场篇)
2022-12-26 20:6:44 Author: 渗透安全团队(查看原文) 阅读量:21 收藏

免责声明
由于传播、利用本公众号狐狸说安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号狐狸说安全及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉,谢谢!

0x01 靶场链接

在线靶场:https://xss.tesla-space.com/

0x02 靶场阶段

Lesson-1

我们可以看到他的传参值点是test,而且传参值可以在页面中回显,下面又说了payload的长度为4,正好和上面的传参值字符长度对应上了

那么我们就可以得出结论了

现在开始进行xss测试,先使用最简单的不带任何绕过方式的js代码进行传参测试

发送进行测试

Lesson-2

我们先传一段正常的字符进行搜索测试

我们先使用第一题的payload进行测试

利用失败,我们打开f12进行分析

我们发现他把传入的js代码直接嵌入到了input标签的value属性中

这个时候我们可以使用闭合input标签的方式进行绕过

闭合成功,成功打入js代码

Lesson-3

输入1先测试一下

我们使用最开始的payload进行测试

    显然是不行的,我们打开f12进行分析

我们看到他还是input标签,我们使用第二关的payload进行测试

很显然行不通的

这个时候想到了伪协议的方式进行绕过测试

我们可以把点击事件嵌入到了input当中,但是后面多出来了一个 "  ,我们要把它也给闭合掉

很显然还是不行,经过测试我们的一些符号被过滤掉了,但是单引号没有被注释掉,那么我们使用单引号结合注释符号,直接把后面的东西给注释掉,我们学过前端的都知道,在html中的单行注释是  //  我们就直接利用单行注释的方法注释掉后面的内容

js代码打入成功

Lesson-4

发现单引号被过滤掉了,我们再试试双引号闭合进行测试

发现直接打入成功

Lesson-5

发现不行,我们打开f12进行分析

我们发现onclick被转义了,那么就换一个事件来进行测试吧

我们首先闭合value的值然后嵌入一个伪协议标签

我们可以看到,在输入框后面插入了一个ifreme,当我们去点击这个图片的时候就会触发我们的js伪协议代码,从而达到触发js代码的效果

可是他虽然弹了js代码,但是没有显示通关的弹窗,我们只好在想其他伪协议标签的办法了

我们可以看到a标签的伪协议标签已经嵌入了进去,我们点击这个超链接即可触发js代码

打入成功,拿下第五关

Lesson-6

我们打开f12进行分析

看来还有可能是伪协议绕过

很显然他把href属性过滤掉了,我们只能换一个其他的伪协议进行绕过了

我们使用iframe伪协议在试一试

发现src属性也被转义过滤了

我突发奇想,之前几关都没出现过大小写绕过和双写绕过,这次我就来试试能不能在这关使用

完美绕过,成功触发js代码

Lesson-7

发现他把script直接就给过滤掉了,这时我们还有一个法宝就是双写绕过

我们接下来测试一下看看

写入成功,成功触发js代码

Lesson-8

我们先来打开f12简单分析一下

我们可以看到在输入框里输入的东西会被当成链接添加到下面那个友情链接的超链接上面,那么我们可不可以使用伪协议直接把js代码嵌入这个超链接上呢?我们现在就来试试吧

我们可以看到嵌入成功了,这说明思路是正确的,但是javascript被转义过滤掉了,这个时候我们要想办法绕过他

这个时候要比上面几关难一点,我这个时候想到了编码绕过的方式,你不让我用明文形式,我编码一下你就不认识我了,从而达到了绕过过滤的方法

我这里使用的是HTML编码的方式进行绕过的

打入成功,拿下第八关

Lesson-9

使用上一关的payload进行第一次测试

好的,插入成功

我们点击超链接试一下吧

那既然这个编码不行我们在换一种编码试一下

这样不行我们就自己写一个携带js代码的html,然后嵌入到值的地方

有窗口弹出,并没有得到自己所要的答案。这个窗口属于自己所编写网页的窗口,并不是题目所属网页窗口。

这时经过分析得知,会不会是必须要有http://才会不提示链接不合法呢?

我带着这个思路测试了一下,发现我的思路是对的

下面讲一下通关思路

发现这次不提示链接不合法了,但是伪协议也不会被执行了,这个时候我想到了既然必须要有http://又要让伪协议代码执行,那就只能先写上http://然后再给他注释掉这种方法来绕过过滤喽

好的,过关成功

Lesson-10

这次什么东西都不给了,我们先打开f12进行分析一波吧

我们发现input都变成了隐藏域,由于传参方式是GET方式,可以直接在url栏里面进行参数传递,那么这样的话我们可以把隐藏域中任何一个input的属性和值经过篡改直接发出去,从而达到xss攻击的目的

可是我们点击输入框并没有触发我们的js代码

我们继续f12进行分析

发现多出来了一个双引号,那么我们再加一个双引号,直接闭合掉那个单引号就可以了

完美闭合

点击输入框后触发js事件,所以我们打入xss成功,完美拿下第十关

Lesson-11

很显然没有打入点了,我们在url里面打入也失败了,这时我们可以利用抓包来进行打入

先来抓包分析一下

我们可以看到他是没有referer的,我们可以通过伪造referer的方法进行打入一些东西

我在这里示范的是打入一个带onclick弹窗的文本框的方式

放包查看页面变化

成功打入一个文本框

f12查看后发现这就是我们利用referer打入的带弹窗的文本框

我们点击后就直接触发js代码

Lesson-12

我们先来试一下11关的payload看看行不行

很显然行不通的

那么我们就要想一下了referer既然不行,我们是不是还有个UA的http头注入没用过呢,对吧

我们在这里可以先试一试,万一成功了呢

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" onclick=alert(1) type="text"

这是payload

我们可以看到文本框打入成功

我们点一下文本框即可触发js代码

完美打入

Lesson-13

由上面两道数据包的js代码注入题可知这道题应该还是数据包类型注入,我们想一下是不是还有cookie对吧

我们在这里就不一一测试了,直接看cookie那段,很明显有数据传输,我们想是不是可以利用cookie打入带js代码的文本框呢?

我们现在就来试试吧

发送数据包查看页面变化

页面出来了一个文本框,那么我们的payload里面嵌入了点击输入框触发js注入代码的代码,我们现在可以直接点击文本框从而让它触发我们所写好的条件

js代码打入成功

Lesson-14

这一关的图片一直加载不出来,所以也没有办法进行测试了。于是在网上找了一些参考,自己记录一下:

查看源码发现exif,猜测应该是exif xss,但是这个链接由于网络的原因无法访问,exif xss,一般利用于文件上传的地方,最经典的就是头像上传,上传一个图片,该图片的exif元数据被修改为xss payload,成功利用弹窗,具体实现使用kali下的exiftool工具,命令如下:

exiftool -FIELD=XSS FILEexiftool -Artist=' "><img src=1 onerror=alert(document.domain)>' brute.jpeg

Lesson-15

查看代码,这一关是关于angular js的知识,ng-include有包含文件的意思,也就是相当于php里面的include,此处可以包含第一关的页面。

构造payload

url处写入语句,

src='level1.php?name=<img src=x onerror=alert(1)>'

如下图所示,这个没有利用成功,搜索到的另一个作者说是,因为这里需要访问angular.main.js

js文件,才能进行包含,虚拟机的环境中无法访问,看样子是需要fanqiang的,

Lesson-16

查看代码发现大小写绕过失效,script/,等都被转换成&nbsp,这时,可以尝试使用%0a,%0d来进行绕过。

构造语句:

Keyword=<img%0dsrc=a%0donerror=alert(16)>Keyword=<iframe%0dsrc=0%0donmouseover=alert`16`></iframe>Keyword=<svg%0aonload=alert`16`></svg>

完美打入js代码

Lesson-17

打开源码发现了两个注入点构造payload

我们发现两个输出的值都被做了实体化转义,无法闭合标签,而 embed标签可以加入事件,可以在arg01,或者arg02中加入事件去触发

测试语句:

arg01=a&arg02=%20onmouseover=alert`1`

Lesson-19

Flash xss

页面源码,未插入语句时:

页面源码,插入语句后:

Payload:

网址或者ip地址

/xss/level19.php?arg01=version&arg02=<ahref="javascript:alert(document.domain)">xss_by_didi</a>

点击“xss_by_didi就可以触发XSS。

解题思路:

flash xss,需要对flash的反编译对源码进行分析,这里使用jpexs-decompiler来分析,首先定位getURL函数

得知version参数可以传入loc4变量中,即sIFR的内容中,但是getURL只在内容为link时打开,所以分析contentIsLink函数

 所以我们可以构造<a > </a> 标签来传值

Lesson-19

我们已经在不知不觉中来到了最后一关了

payload:level20.php?arg01=a&arg02=\"))}catch(e){}if(!self.a)self.a=!alert(document.cookie)//%26width%26height

成功弹窗

xss常用标签<script><img><input><details><svg><select><iframe><video><audio><body>这里只列举了一部分常用


付费圈子

欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

进成员内部群

星球的最近主题和星球内部工具一些展示

关 注 有 礼

关注下方公众号回复“666”可以领取一套精品渗透测试工具集和百度云视频链接。

 还在等什么?赶紧点击下方名片关注学习吧!


群聊 | 技术交流群-群除我佬

干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247495276&idx=2&sn=2c31fc23d1b62ea940c76a191146b790&chksm=c17613c3f6019ad5bd1d32ef194016e0f22f5bdc6e935a85f5f0bdc09987bf407aaa68f3c7b3#rd
如有侵权请联系:admin#unsafe.sh