手工探针xss绕过waf规则
打开靶场
写入跨站测试语句发现拦截
这里就做一个最经典的方法,做一个关键字拆分来确立拦截的是什么东西。
去掉最后字符串,访问还是拦截,再去掉alert(1),访问还是拦截,再去掉尖括号里面一个字符。留下scrtp在访问一下,还是拦截了,拿再去掉后门的一个尖括号,留下前面的那个访问一下
正常了,通过这个测试可以分析出,他的拦截应该在两个尖括号里面的,我们试一下只写两个尖括号,不拦截,在尖括号里面加一个s,他拦截了
然后换成a,他又不拦截了,所以他检测尖括号里面的内容,它是针对的跨站语句的关键字符,比如script,s拦截。
我们去xss跨站平台,复制一串代码
然后直接复制到网站来执行跨站攻击,明显被拦截了
这是我们用关键字拆分,去掉最后一个字符串访问,被拦截了,再去掉一个尖括号就正常访问了,查看元素,我们查看一下他发送数据包的情况
这种时候他想把我们需要获取的数据发送到xss跨站平台,但是这里请求网址的时候被拼接了其他符号干扰了,因为没有尖括号,我们可以把尖括号去掉,换成’,单引号括起来,访问一下试试
正常访问了。
还有其他方法,选择这种下加上尖括号,但在后门尖括号里面加一些乱七八糟的字符干扰#。然后访问还是正常的,这个就是特殊符号干扰方法,常见的就是#,因为#在web里面是注释的,他是通用的,特符都可以用来干扰,有一些符号就是截断或者注释的做用,代码去匹配一些关键字的时候,防止他匹配的后面或者前面的关键字,来绕过。
标签语法替换,
因为xss,他的执行效果可以由多个代码实现,就是用到其他的函数,功能来替换,在跨站中想实现那种功能,也是可以应用到不同的操作语句去实现同一个目的,比如下面这串代码,取得的功能是一样的,
不过为什么要把斜杠加到a /href这里,因为他检测的尖括号,然后网址是可以随意更改的,不会检查,a在尖括号外面,只有a href在尖括号里面可能被检测到,所以在哪里加一个/,加/的原因,js代码或者htm代码通常分别都会以</script> 和</html>结束,他会误认为已经结束了。所以绕过了
不过这个代码需要点击一下超链接,就会加载新的地址信息,但是目的都完成了。
在这种前端代码语言能起到一个结束说明的做用。这是根据语言特性和漏洞情况来决定的。
注入里面/就没有任何卵用。
还要别的语句也可以执行出来同一个效果,这种思路就是 标签语法替换 以不同的语法执行同一个目的。
还有一种,
xss fuzzer
http://xssfuzzer.com/fuzzer.html
这个网站是干嘛用的,专门用来xss做fuzzer的网站。
因为js代码学艺不精,所以只能默认的,要是学的好就可以自定义。
提交方式更改
先更改一下源码的接受方式,从get改为了接受任何方式,就是现在代码。
get提交方式的代码,肯定会被拦截的,换成post提交方式
换了提交方式之后,直接换post提交方式,秒杀靶场。
这个原因接受更换提交方式,因为安全狗检测的时候检测的url,没用检测到post提交方式,如果安全狗选项选择了也检测post这个时候,post提交方式就不行了。如果全部方式都检测,就不用想这个了。需要满足不拦截的前提条件。
垃圾数据溢出
这个就和之前文件上传演示的一样,这里他不是检测尖括号吗,那就可以在最后一个尖括号前面加一大堆垃圾数据,直到安全狗不检测直接放行。
加密解密算法
下图这个就是对跨站语句进行个编码,放到网站里面也可以正常执行出来,这个是对数字编码了
必须要用这个网站可以识别的加密编码方式。
自动化xss绕过waf测试演示
xsstrike工具
他第一个特点,可以自带绕过waf,第二个特点还有fuzzer的引擎,找到漏洞,用这个功能基本上都能实现,
参数说明
-h, --help //显示帮助信息
-u, --url //指定目标URL
--data //POST方式提交内容
-v, --verbose //详细输出
-f, --file //加载自定义paload字典
-t, --threads //定义线程数
-l, --level //爬行深度
-t, --encode //定义payload编码方式
--json //将POST数据视为JSON
--path //测试URL路径组件
--seeds //从文件中测试、抓取URL
--fuzzer //测试过滤器和Web应用程序防火墙。
--update //更新
--timeout //设置超时时间
--params //指定参数
--crawl //爬行
--proxy //使用代理
--blind //盲测试
--skip //跳过确认提示
--skip-dom //跳过DOM扫描
--headers //提供HTTP标头
-d, --delay //设置延迟 作者:shtome https://www.bilibili.com/read/cv13030088/ 出处:bilibili
下载好之后打开
之后在python3里面点运行,就会出现那个要负责的东西,复制下来
粘贴到命令提示符去,运行起来
任何就可以使用它来,
waf status是waf的状态,这里显示的是离线,
测试结果,那个fiftered <test> ,是跨站语句<test>被拦截,我们去靶场测试一下看看是不是
拦截了,绿色的就是不拦截的跨站语句。
他可以实时的帮你去探针,这个语句代码有没有触发waf拦截。
那些没有被拦截的代码就可以带到网站上来使用。
不加--fuzzer
就会直接按照自己的程序去帮你测试这个网站,跨站成功的payload的都会显示出来
有3072个payload的去探针,
这个就会出现弹窗,触发事件是移动鼠标。那个括号里面是可以控制的探出什么,输入1弹窗的内容就变成了1。
这就是这个工具的简单属性,就是用的python3环境。
#fuzz下xss绕过waf演示
准备xss的跨站语句字典
用工具去帮助发包,用burp看一下效果
这就是开始攻击了,通过他的返回长度,来确定对方是否拦截。 比如下面两个回执长度2045,应该是安全狗拦截了,长度700+的就是正常的发送过去了,复制一个正常发送过去的跨站语句来到网站测试
然后这时候发现,访问太多次,安全狗启动了流量保护,哈哈哈
关一下安全狗的流量保护
成功了。
这是fuzz字典批量跑出来的结果,我不知道原因,但我跑出来了直接用。找好字典!但是会怕被安全狗封掉ip,一种思路是开代理,更好的方法自己搭建一个环境,在自己本地测试,然后测试好啦,再去网站上搞。
然后有一些网站需要自定义一下,需要做一些小的修改,比如靶场第二关,有符号干扰需要闭合一下,才能正常执行语句,就在网站的时候在闭合一下跨站语句就好了。
#关于xss跨站漏洞的安全修复建议
装waf
开启 httponly,
输入过滤,接受代码的时候过滤
输出过滤等 输出的代码的时候过滤
最好的方法就是两重过滤
版权归原作者 上线之叁 所有, 如有侵权,请联系我们删除。