前言-基础篇

在了解Bypass Waf之前,我们应该首先了解一些前置知识:

1.Waf是什么

2.Waf的类型

3.Waf的工作原理

1. Waf是什么

Waf全称为Web Application FireWall(Web应用防火墙);顾名思义Waf原理与日常使用防火墙相似,但主要注重在Web页面中存在的对应安全问题。

2.Waf的类型

WAF分为非嵌入型WAF嵌入型WAF

非嵌入型是指硬WAF、云WAF、软WAF之类。

嵌入型是指web容器模块类型WAF、代码层WAF。

3.Waf的工作原理

不论是什么类型的Waf,工作的方式几乎差不多。首先,从用户体验上出发,用户的目的是部署Waf从而解决对应的WEB安全问题;所以对于Waf开发来说,需要了解的就是:哪些位置可能会引发安全漏洞、如何判断攻击者利用攻击触发了漏洞。

回顾一下TOP 10的安全漏洞,我们可以得到一个结论,Web漏洞产生的位置基本都为:

1.HTTP头部字段

2.GET、POST提交的内容

3.上传的文件

所以,我们也可以逆推得到Waf构建及工作的原理大致为:

1.构建各种漏洞利用的攻击特征库

2.对漏洞产生位置的内容进行搜集

3.将搜集的内容在特征库中进行匹配,查看是否存在攻击特征并作出相应

更详细的工作流程如下图所示:

建立特征库的流程:

判断恶意攻击流程:

绕Waf实战

了解完Waf是怎么拦截对应的流量之后,我们就明白了绕Waf的最终目标是绕过特征库检测(即绕过正则匹配)。

那如何绕过正则匹配呢?

主要的方式就两种:

1. 通过Fuzz脚本构造大量Payload进行尝试

2. 通过人为手工探测Waf编写规则。

第一种方式比较暴力,且针对初学者并不是很友好,因为需要很多之前师傅们绕Waf的Payload作为前置知识。

基本思路大致是:对绕过的方法进行搜集构造一些经常绕Waf的字符串,并且利用脚本在漏洞点构造语句+绕Waf字符串+垃圾字符等Payload,通过跑大量Payload的方式爆开可以绕Waf的Payload。

很好,所以我们介绍第二种方法。

相关资料获取可私信回复“资料”

**前置知识:**由于Waf需要尽量满足客户需求,Waf的匹配规则通常会匹配的很详细进而减少误报。

以某安全厂商的Waf产品的规则为例:

那我们就可以通过手工一步步探测Waf的过滤规则是什么,从而进行绕过。

【领取文档】

如何进行手工探测Waf的过滤规则-实战篇

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

探测规则1

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

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

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

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

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

1.匹配script

2.匹配alert

3.匹配<.*?>

4.匹配

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

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

script

alert

<(.*?)>

可以发现,拦截的关键字为

探测规则2

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

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

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

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

1.匹配οnerrοr=

2.匹配alert(.*?)

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

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

一一验证:

οnerrοr=

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

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

alert(.*?)

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

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

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

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

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

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

故试了试如下Payload:

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

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

探测规则3

先总结一下前面两波手工探测的成果:
1.过滤了

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

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

test

页面点击链接看现象:

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

【安全漏洞】浅谈Bypass Waf (基础-实战)相关推荐

  1. 浅谈Bypass Waf - 上(基础篇)

    文章来源|MS08067 Web漏洞挖掘班 第3期 本文作者:Hi2x(Web漏洞挖掘班讲师) 0x00 前言 在了解Bypass Waf之前,我们应该首先了解一些前置知识: 1.Waf是什么 2.W ...

  2. 小学计算机教学的趣味性,浅谈提高计算机基础教学课堂趣味性途径.doc

    浅谈提高计算机基础教学课堂趣味性途径 浅谈提高计算机基础教学课堂趣味性途径 [摘 要]本文论述了如何在计算机基础教学中提高学员学习兴趣的几种途径,旨在为军队院校的素质教育提高可借鉴的方式方法 [关键词 ...

  3. 计算机基础中怎么评价,浅谈职校计算机基础教学中的教学评价

    浅谈职校计算机基础教学中的教学评价 在我们具体实施任务驱动法的教学过程中,教学评价是非常重要的环节.教学评价是计算机课 (本文共2页) 阅读全文>> 随着时代的发展,人们对高等教育发展的关 ...

  4. 万丈高楼平地起 ——浅谈网格计算基础

    万丈高楼平地起 --浅谈网格计算基础 网格技术的产生.发展必须具备以下三个基本条件:计算资源的广域分布.网络技术(特别是Internet)以及不断增长的对资源共享的需求.在计算器技术发展的早期阶段,只 ...

  5. 艺术对于计算机专业的应用,浅谈《计算机应用基础》课程的教学艺术

    浅谈<计算机应用基础>课程的教学艺术 作者:梁江 来源:<职业·中旬>2009年第11期 <计算机应用基础>是高职高专学生的必修课,涉及面非常大,多年来一直是人们关 ...

  6. 我们为什么要学计算机硬件技术设计,浅谈计算机硬件技术基础的论文(2)

    浅谈计算机硬件技术基础的论文篇二 <"计算机硬件技术基础"创新教学研究> 摘要:在深入分析"计算机硬件技术基础"课程在传统授课模式下所呈现的一些现状 ...

  7. 4计算机网络应用,浅谈计算机网络应用基础

    <浅谈计算机网络应用基础.doc>由会员分享,可免费在线阅读全文,更多与<浅谈计算机网络应用基础>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索. 1 ...

  8. 浅谈计算机应用的认识,浅谈《计算机应用基础》教学

    中国论文联盟*编辑. 摘 要:在当今信息化的时代,计算机网络技术和通信技术的大力发展,使人们对信息的意识,对开发和使用信息资源的重视越来越加强.而大多数电大的学生对计算机学习显得十分困难,要想尽快学习 ...

  9. 浅谈python语言_浅谈Python语言基础知识点!

    一.Python 语言的简述 Python语言是一种解释型.面向对象的编程语言,是一种开源语言. Python属于动态类定义语言,也是一种强调类型语言. 二.Python 语言的特点 1.简单.高级 ...

最新文章

  1. 强势安利7个广受好评的软件!助你一臂之力!
  2. 阿里巴巴启动2017全球创客大赛 四大洲共设25个赛区
  3. git reset --hard 恢复
  4. VTK:相互作用之ShiftAndControl
  5. 今天是 OSChina 上线 6 周年!
  6. 文件服务器复杂权限,运用技巧:如何提高文件服务器权限?
  7. ORA-01747: user.table.column, table.column 或列说明无效
  8. linux之rpm命令
  9. javascript之this指向
  10. 几种建模工具简介(SPSS,SAS,Stata,R,Matlab,Amos,Lisrel)
  11. Maximum call stack size exceeded
  12. 海康威视监控下载下来的mp4格式的视频,小类别MPEG-PS格式,这种格式在浏览器中没法播放,跪求播放方法。
  13. unreal无损音乐百度云_Roxette女主唱Marie Fredriksson - Den Standiga Resan 个人瑞典语专辑 [APE]...
  14. Apache Kafka的流式SQL引擎——KSQL
  15. Swift之代码优化
  16. MATLAB 数字基带信号的传输
  17. 超前进位加法器原理与递推式超详细推导+verilog实现与测试
  18. 如何一键实现计算机休眠
  19. 关于搭建视频直播运营平台的一点经验和心得
  20. 走了....我不是徐志摩,我不知道怎样轻轻的走....

热门文章

  1. 成功解决lib\subprocess.py, line 997, in _execute_child startupinfo) FileNotFoundError: [WinError 2]
  2. 成功解决PermissionError: [Errno 13] Permission denied: './data\\mnist\\train-images-idx3-ubyte'
  3. MySQL读取Binlog日志常见的3种错误
  4. 使用maven工程实现Mybatis自动生成Mapper文件
  5. Netty源码 服务端的启动
  6. bzoj 4559 [JLoi2016]成绩比较 —— DP+拉格朗日插值
  7. 文件字符流 编码判断
  8. 课堂练习--最大子数组和 环
  9. 嵌入式培训学习历程第二十二天
  10. Nokia Device Specifications