新秀# 原创,# Web

一次bypass Xss-waf的经历

那原本是一个Happy的夜晚,我搞了二两小白酒,听到领导发来的消息,还TM喝酒,加班了!

接到测试网站,利用crawlergo+XRAY扫到了一个xss,这是入口点。打开网页长这个样子。

利用点在keyword参数
05877-kr43jh59m2g.png

我们闭合前面的<script>看看
30917-cxqie6d6g5w.png

嗯..问题不大
24310-vo138w8wt0i.png

而当直接注入payload的时候,会被拦截
36720-qfdmmpoh1d.png

麻麻赖赖的,咋直接干它!

开始尝试绕过payload

最后发现,onerror= 会被直接拦截

onerror== 不会被拦截,而是变成onerror="="

除此之外,不论=后面是否存在数值,都会被拦截。

60655-t1fak84sy4n.png

于是猜想,是不是onerror这个事件太常用了,所以作为关键词的一部分被拦截了,因此我开始fuzz事件

这里贴出所有的事件,来自菜鸟教程。

onclick  
oncontextmenu  
ondblclick  
onmousedown  
onmouseenter  
onmouseleave  
onmousemove  
onmouseover  
onmouseout  
onmouseup
onkeydown
onkeypress
onkeyup
onabort
onbeforeunload
onerror
onhashchange  
onload
onpageshow
onpagehide
onresize  
onscroll  
onunload  
onblur  
onchange  
onfocus  
onfocusin  
onfocusout
oninput  
onreset
onsearch
onselect
onsubmit
oncopy  
oncut  
onpaste
onafterprint  
onbeforeprint  
ondrag
ondragend  
ondragenter
ondragleave
ondragover
ondragstart  
ondrop
onabort
oncanplay
oncanplaythrough
ondurationchange
onemptied
onended
onerror  
onloadeddata  
onloadedmetadata
onloadstart
onpause  
onplay  
onplaying  
onprogress
onratechange
onseeked
onseeking  
onstalled
onsuspend
ontimeupdate
onvolumechange
onwaiting  
animationend
animationiteration
animationstart
transitionend  
onmessage  
onmousewheel
ononline
onoffline  
onpopstate  
onshow
onstorage  
ontoggle  
onwheel

随后,fuzz出了一堆可触发的事件出来
05030-r9oh6fbi9g8.png

最后我选择了onwhell,滚动的时候触发,但是紧跟着alert依旧不行
90448-2s2wlcw8y2.png

于是,我认为是alert(1)这个函数太过敏感,我们可以用一些别的方法来进行混淆。

于是在尝试了反引号,confirm,prompt等都不行的时候,我居然想出了console.log(1)这个方法。

没想到又出来一个拦截

真的是i了i了
72508-ga5uzv0vwri.png

最后掏出我弹药库里的一些储备

例如这些:

self['al'%2B'ert'](1) >
parent['al'%2B'ert'](1) >
frames['al'%2B'ert'](1) >
content['al'%2B'ert'](1) >
window['al'%2B'ert'](1) >

但是也都一一被拦截下来

85520-7ymum815qfo.png

最后,幸运之神还是眷顾了我,让我找到了没有被waf住的包

例如:

javascript&#x3A;alert&lpar;document&period;cookie&rpar;

在javascript接着的语句中,进行编码后依旧可以进行识别

或者利用toString的编码转换,来进行bypass

例如

54325-g0bsk45qfl6.png

最后结合top来进行二次绕过

top[11189117..toString(32)](1);

那么最后为什么还没有弹框呢?原因是src=1 和onwheel压根没啥子关系。。

79550-2ze4zsmnu66.png

我们换个<svg onwheel>会不会更好。只需滚动一下鼠标滑轮即可

</sCrIpT><svg onwheel=top[11189117..toString(32)](1);>

06944-1lef4tdi05s.png
搞定收工,继续喝酒去!

原创文章,作者:运营,如若转载,请注明出处:http://www.csxxaq.com/yc/960-1.html
如何防止短信API接口遍历
« 上一篇 06-22
域渗透基础(一)
下一篇 » 06-22

相关推荐

「翻译」 如何Bypass rbash

前言我们都知道安全分析师和黑客的关系像tom和jerry一样,一个人采取措施加强安全等级,另外一个人试图绕过它。这种类似的情况出现在我解决CTF挑战的时候...

新秀红队防猝死手册

文章来源:https://github.com/zhutougg/RedteamStandard一切为了不丢分工作环境工作时全部操作均在虚拟机中完成虚拟机...