0


xss跨站之waf绕过及安全修复(28)

手工探针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,

输入过滤,接受代码的时候过滤

输出过滤等 输出的代码的时候过滤

最好的方法就是两重过滤

PHP:http://www.zuimoge.com/212.html

JAVA:https://www.cnblogs.com/baixiansheng/p/9001522.html

标签: xss 安全 前端

本文转载自: https://blog.csdn.net/san3144393495/article/details/130911492
版权归原作者 上线之叁 所有, 如有侵权,请联系我们删除。

“xss跨站之waf绕过及安全修复(28)”的评论:

还没有评论