浅谈Bypass Waf - 下(实战篇)

admin 2022年2月10日01:35:43评论103 views字数 2629阅读8分45秒阅读模式

文章来源|MS08067 Web漏洞挖掘班 第3期

本文作者:Hi2x(Web漏洞挖掘班讲师)



以下测试均为授权渗透测试:

探测规则1

浅谈Bypass Waf - 下(实战篇)


在页面发现一处富文本编辑器,并且该内容提交后会显示在对应页面上,这里第一个想到的就是XSS了。

先整个最简单的XSS的Payload试试,抓包看现象:

浅谈Bypass Waf - 下(实战篇)


发现输入的标签会被HTML实体化编码,所以每次构造Payload时需要解HTML实体。

浅谈Bypass Waf - 下(实战篇)


从回包的状态码403和Server值可以判断是被Waf拦截了。

那么这时如果我们想要绕Waf的话,就要去思考它对应的正则匹配的规则可能存在的情况了:

1.匹配script

2.匹配alert

3.匹配<.*?>

4.匹配<script>

5.匹配<script>.*?alert.*?</script>

注:.*?表示非贪婪比配,可以匹配任意字符,直到下一个字符出现为止。例如:<.*?>可以匹配<符号开头、后面可以有任意字符直到匹配到>为止。


大致推出比较有可能的就是这集中情况,那我们就可以进行一一验证:

script

浅谈Bypass Waf - 下(实战篇)


alert

浅谈Bypass Waf - 下(实战篇)


<(.*?)>

浅谈Bypass Waf - 下(实战篇)


<script>

浅谈Bypass Waf - 下(实战篇)


可以发现,拦截的关键字为<script>,则第五种情况无需测试,因为构造的字符串存在<script>,一定会被规则匹配中。
那么该规则过滤了<script>标签,我们就可以思考通过其他标签构造XSS,例如<img>等。

探测规则2

既然可以构造img标签,那也拿img的XSS Payload浅测一下:

浅谈Bypass Waf - 下(实战篇)


好了,又被拦了。首先大致能排除<img src=xxx>的问题,出于稳健的心理浅测一下:

浅谈Bypass Waf - 下(实战篇)


说明构造的Payload里面被拦截的特征为:onerror=alert(123)。


那就再简单猜测一下对应的Waf规则吧:

1.匹配onerror=

2.匹配alert(.*?)

3.匹配on.*?=alert(.*?)

4.匹配on.*?=.*?alert(.*?)


一一验证:

onerror=

浅谈Bypass Waf - 下(实战篇)


拦了onerror=应该也拦了其他的on事件,简单尝试一下:

浅谈Bypass Waf - 下(实战篇)


那on事件几乎就是无了,得思考思考怎么绕。


alert(.*?)

浅谈Bypass Waf - 下(实战篇)


看来也被拦截了,那只能试试换prompt(123)或alert`123`

浅谈Bypass Waf - 下(实战篇)


均已失败告终...所以下面两个on.*?=.*?alert(.*?)和on.*?=alert(.*?)也无需测试都会被Waf拦截。


alert最简单的绕过方式就是换函数了,但是常用的弹窗函数都被禁用了,貌似已经有点困难了;但是突发奇想:研发是否会不会只过滤了常见的弹窗函数,拿document.location.href=xxx试试:

浅谈Bypass Waf - 下(实战篇)


没拦截这个函数呀,所以并不是所有函数都被拦了,而是常用的alert()、prompt()、confirm()被拦截了。


所以要么换函数,要么强行绕alert函数(我喜欢硬刚,就冲alert了!)

我发现貌似这样判断alert是否被过滤不太严谨,应该重新判断一次:

故试了试如下Payload:

浅谈Bypass Waf - 下(实战篇)


意外发现竟然没有拦截?所以前面alert(.*?)判断的匹配规则不对,匹配中的应该为 alert(123),前面可能有内容才会匹配

浅谈Bypass Waf - 下(实战篇)


xxalert没有拦截,那说明过滤的应该是特殊符号,这时上波Fuzz爆破一下,发现只有:和是被拦截的,也就是说,不能使用:alert(123) alert(123)

探测规则3

先总结一下前面两波手工探测的成果:
1.过滤了<script>等标签
2.过滤了onerror事件
3.过滤了:alert(123)及 alert(123)
在这里,第一个规则我们可以使用<img>或者<a>,比较好绕过;第二个规则再加上对<script>标签的限制比较难绕过,但仍然可以尝试使用href=javascript:xxxx伪协议绕过;但如果在第二个规则内构造伪协议,则Payload应该为:<a href=javasciprt:alert(123)>,这样的话会匹配中第三个规则:alert(123),所以思路应该还是要换函数:

浅谈Bypass Waf - 下(实战篇)


这样就可以执行JS代码了,但是没什么用...所以还是要想办法弹窗,但是又必须要绕过:alert(123)等。


灵机一动,Payload就来了!alert()函数是JS BOM的函数,为了调用方便被简写成alert(),而正规的调用方法为window.alert()。那这样Payload就有了:

<a href=javascript:window.alert(123)>test</a>

浅谈Bypass Waf - 下(实战篇)


页面点击链接看现象:

浅谈Bypass Waf - 下(实战篇)

浅谈Bypass Waf - 下(实战篇)

以上漏洞已报送至对应厂商。



Hi2x老师主讲的 Web漏洞挖掘第3期

火爆报名中~


第三期,主要突出了学员最关心的“实战打靶”练习,第三期我们新增加了快速打点方法+脚本思路、打靶机模拟实战等内容,并配备了专门的“实战靶场”以供同学们练习!


最新课程目录3.0版

浅谈Bypass Waf - 下(实战篇)

*大纲仅作为参考,会根据当期进度有所变化(加客服获取高清课程导图)


课程费用

每期班定价2499新年价:1999前30名送399元Web安全知识星球名额

每个报名学员都可享受一次后续任意一期课免费重听权益,一次没学懂就再来一遍,后续培训可任选一期来听。请有意参加培训的学员抓紧报名!


凡是MS08067旗下任意星球学员或其他培训课程学员,可享内部VIP价1799

支持支付宝、信用卡、花呗分期,对公转账,可开发票!


知识星球是什么


第二期班部分学员作业

越权漏洞实战之从越权到越轨

fastjson-cnvd-2017-02833漏洞复现

CVE-2020-2551攻击实录

逆向漏洞POC 一条龙

泛微 e-office v9.0任意文件上传漏洞(CNVD-2021-49104)

聊一聊我是如何学习网络安全的(入门阶段)

使用burp插件captcha-killer识别图片验证码(跳坑记)

Grafana 任意文件读取漏洞


上课时间

开课时间1月27号,每周二天课,共8周21节课(42小时)
周四:19:30-21:30
周六:14:00-18:00
如果无法准时参加直播课程,在线培训的每节课程都会被录制成视频上传到学员区,可随时下载观看。


上课方式

培训采用在线直播+随堂录播+配套教材+配套星球+课后作业的形式,无需等待,报名后立即进入“Web安全”星球开始预习。
 浅谈Bypass Waf - 下(实战篇)



    你距离大佬,只差一个决定       

报名咨询请联系小客服

浅谈Bypass Waf - 下(实战篇)

扫描下方二维码加入星球学习

加入后邀请你进入内部微信群,内部微信群永久有效!

浅谈Bypass Waf - 下(实战篇) 浅谈Bypass Waf - 下(实战篇)

浅谈Bypass Waf - 下(实战篇)浅谈Bypass Waf - 下(实战篇)

浅谈Bypass Waf - 下(实战篇) 浅谈Bypass Waf - 下(实战篇)

来和5000+位同学一起加入星球学习吧!


浅谈Bypass Waf - 下(实战篇)


原文始发于微信公众号(Ms08067安全实验室):浅谈Bypass Waf - 下(实战篇)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月10日01:35:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   浅谈Bypass Waf - 下(实战篇)https://cn-sec.com/archives/768033.html

发表评论

匿名网友 填写信息