xss靶场原理以及绕过方法

xss攻击原理(个人理解):在可插入点中插入js脚本语言,插入到web服务器,在对方管理员浏览时会执行所写的脚本语言

xss攻击可以分为三类:
1、反射型:攻击数据不会存储在对方服务器上,只与该网站进行一次交互(在后端语言处理)
2、存储型:攻击数据会存储在对方服务器上,持续对该网站进行攻击(也是在后端语言处理)
3、DOM型:在url上攻击,也可以说是GET上,只与前端交互,不与后端交互

xss攻击危害:
1、窃取cookie
2、未授权访问

攻击方法:
1、找xss插入点
2、黑盒测试,收集过滤信息
3、构造payload来绕过过滤,然后进行攻击

这里结合一下xss靶场讲一下攻击手段,以及原理和绕过方法

xss靶场原理以及绕过方法_第1张图片

首先可以看到url上有?keyword=这些,这里就可以确定这是DOM型攻击,只与前端交互

我们可以尝试用js语言看看可以
payload:

xss靶场原理以及绕过方法_第2张图片

第一关,啥也没有做,直接插入js脚本就行,可能有些人会问窃取cookie怎么弄,这里就是在alert()这修改下就行,或者利用xss平台也可以,xss平台会给payload,不用自己构造,xss平台有很多,在网上搜xss平台就行,看你自己个人用那个xss平台

我用的是这个 xss平台:http://xsscom.com//index.php?do=login

xss靶场原理以及绕过方法_第3张图片

首先还是利用上面payload测试下

xss靶场原理以及绕过方法_第4张图片

屏幕截图 2023-06-27 133027.png

通过看回显的页面源码发现,插入的语句插入在input的标签中,没有触发该js脚本,因此我们可以闭合掉input标签来实现该js脚本触发
paylaod:">

xss靶场原理以及绕过方法_第5张图片

接着看下一关

xss靶场原理以及绕过方法_第6张图片

屏幕截图 2023-06-27 135616.png

发现我们传进去的参数部分被实体化了,<"> ,但是它的闭合方式跟上一关的不一样,这关事单引号,那我们就试一下单引号闭合看下,要注意的是咋们要绕过实体化,所以我们重新构造一个payload

payload:'οnfοcus=javascript:alert() ’

xss靶场原理以及绕过方法_第7张图片

接着看下一关的绕过方式,还是一样,首先测试一下过滤的啥字符

xss靶场原理以及绕过方法_第8张图片

屏幕截图 2023-06-27 194544.png

可以看到<> 被替换成空,所以我们就使用 onfocus 事件看下

xss靶场原理以及绕过方法_第9张图片

我们结合源码来看下这关过滤了啥

屏幕截图 2023-06-27 194518.png

发现这关就是将 < > 替换成了空,绕过着俩个 < > 就行

好,接着看下关

xss靶场原理以及绕过方法_第10张图片

屏幕截图 2023-06-27 195335.png

xss靶场原理以及绕过方法_第11张图片

屏幕截图 2023-06-27 202407.png

通过测试发现,on 和 script被过滤了,再接着测试下大小写过滤了没

xss靶场原理以及绕过方法_第12张图片

发现也被过滤,因此这里要利用其他标签来绕过这个过滤,标签有很多,看自己想用那个就用那个,但是要注意的是这里是input标签要先闭合input标签,然后在插入其他标签

payload:“>test<”

xss靶场原理以及绕过方法_第13张图片

这里要点test才可以进行跳转

接着下一关,我就不一个一个测试了,直接审计源码

xss靶场原理以及绕过方法_第14张图片

这里可以看到

xss靶场原理以及绕过方法_第15张图片

接着看下一关源码

xss靶场原理以及绕过方法_第16张图片

这里也是替换,但是它是把这些替换成空,因此我们可以利用双写来绕过
payload:“>alert(1)<”

xss靶场原理以及绕过方法_第17张图片

接着下一关,这关跟前面有点不一样

xss靶场原理以及绕过方法_第18张图片

这里就是多了一个双引号过滤,而且这里还是插入到a标签的超链接中,因此我们这就要利用a标签的隐藏属性,a标签自动Unicode解码,因此我们利用unicode编码来绕过

paylaod:javascript:alert(1) 然后就是unicode进行编码
javascript:alert(1)

xss靶场原理以及绕过方法_第19张图片

接着下一关,还是审计代码

xss靶场原理以及绕过方法_第20张图片

过滤手段一样,但是这里有一点的是,这里多了一个判断,判断写入的url有没有https:// ,没有的话直接出错,有的话才能插入,所以这里要利用html的一个特性,就是注释的代码也会被执行,所以我们吧http://注释掉来绕过

payload:javascritp:alert()/http:/// 还是进行编码
javascript:alert(1)/http:///

xss靶场原理以及绕过方法_第21张图片

接着下一关

xss靶场原理以及绕过方法_第22张图片

看这关的源码发现多出来很多隐藏标签,这点很重要
通过给的来传参数发现不可行,这里就要用到隐藏的参数了

xss靶场原理以及绕过方法_第23张图片

xss靶场原理以及绕过方法_第24张图片

然后分析一波源码

xss靶场原理以及绕过方法_第25张图片

发现原理有俩个传参数的值,但是插入到语句的是t_sort这个传参的值,因此这里要用到t_sort来传参

payload:?t_sort=" οnfοcus=javascript:alert() type="text
这里写type=text是为了让隐藏了的input的标签显示出来

xss靶场原理以及绕过方法_第26张图片

后面的几关也是先看页面源码

屏幕截图 2023-06-28 163920.png

这关也是隐藏的标签应该跟上一关差不多,但是你看这个源码,t_ref这个标签,ref有点像referer的HTTP请求头,为什么这样猜呢,因为你看它后面接了http://127.0.0.1这个请求,想着跟请求的,基本上都是HTTP请求里面的请求头

过滤信息还是分析源码

xss靶场原理以及绕过方法_第27张图片

就过滤了<> ,因此我们利用onfocus事件来触发

payload:" οnfοcus=javascript:alert() tyep="text

xss靶场原理以及绕过方法_第28张图片

继续看下一关的绕过

屏幕截图 2023-06-28 191321.png

这关很明显是跟上关一样,就是改了一下它插入的地方,这里显示是 t_ua 明显就是user-agent 这个HTTP请求头
,过滤这些也是直接看源码分析

xss靶场原理以及绕过方法_第29张图片

跟上面的的过滤手法一样,就不用我多说了吧

xss靶场原理以及绕过方法_第30张图片

这里就是换成了user-agent

看下一关

xss靶场原理以及绕过方法_第31张图片

这里看到t_cook,cook有点像cookie,先盲猜一下,接着审计一下源码

xss靶场原理以及绕过方法_第32张图片

果然真是cookie,我们直接利用开发者工具来修改cookie,然后刷新一下就可以了

xss靶场原理以及绕过方法_第33张图片

下一关由于跳转到网站已经挂了,所以这关没必要做,直接下一关

先看页面源码

屏幕截图 2023-06-29 104656.png

看到了一个ng-include,这个ng-include指令就是文件包涵的意思,用来包涵外部的html文件,如果包涵的内容是地址,需要加引号

那我们包涵第一关来看看能成功吗

paylaod:?src=‘level1.php’

xss靶场原理以及绕过方法_第34张图片

接着就用利用第一关的传参点来来进行xss攻击

xss靶场原理以及绕过方法_第35张图片

这里也可以包含其他关,但是第一关简单,我们就从简单入手,太难了现在也弄不明白

来看下一关

屏幕截图 2023-06-29 115245.png

可以看到插入的信息插入在center标签中
过滤信息还是审计源码

xss靶场原理以及绕过方法_第36张图片

发现过滤script、空格、/、空格绕过方法有 %0a、%09 (tab) 、 ${IFS} 、 $IFS%09 等很多种方法

payload:

xss靶场原理以及绕过方法_第37张图片

下面的关都是利用flash,这里很多浏览器不支持,所以我就不测试了

你可能感兴趣的:(xss,前端,网络安全)