【WAF Bypass】一次鸡肋的xss漏洞挖掘

先吐槽一下:最近的项目到处是安全防护,漏洞越来越难挖(头秃😂)

 

第一次绕过很简单,过滤了常见标签和alert、confirm、prompt

很简单,直接利用js全局变量绕过(方法很多,在html标签属性内,也可以直接html编码)

我用的payload:" ><details ontoggle=self['al'%2B'ert'](1) open>test</details> "

 

漏洞提交上去,过了一天,客户回复:无法弹窗,暂不收录,立马试了下,卧槽,真的不能弹了,这修复的也太快了吧(NB PLUS),立马开始第二次bypass

 

第二次比较狠了,直接干掉<>和绝大部分on事件:

image

输出在html标签属性内,<>不能用,只能引号触发,然后看看type=hidden,这要触发就很鸡肋(结合浏览器快捷键),一般payload为:" accesskey="x" onclick=top['al'%2b'ert'](1),然后火狐浏览器alt+shift+x触发😂,这里想到的是这种方法,但是执行时onclick不能用😫,顺手fuzz一下可用on事件,惨目忍睹,见下图:

image

我一度把所有事件全部试了一遍(虽然知道并不可行😂),没办法,最后还是回到如何逃逸onclick检测这个思路上,疯狂翻资料,看到个onclick/=alert(1)这种形式,尝试了下:

image

发现/可以让onclick逃逸出来,试试将/放入onclick前边:

image

被检测到,在onclick前继续拼接字符逃逸黑名单检测:

image

yep,onclick成功逃逸了

 

 

onclick{fuzz}="self['al'%2B'ert'](1)

一开始就进行了fuzz测试%00-%ff

Burp响应是这样的:

image

开始就直接忽略了😂,浏览器解析帮我们绕waf😂,突然想起了利用html解析优先级逃逸引号的案例了,浏览器YYDS

posted @ 2021-04-09 09:39  Carrypan  阅读(368)  评论(0)    收藏  举报