浅谈Bypass Waf – 上(基础篇)

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

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

0x00 前言

在了解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.将搜集的内容在特征库中进行匹配,查看是否存在攻击特征并作出相应


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

建立特征库的流程:


判断恶意攻击流程:


0x01 绕Waf实战

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


那如何绕过正则匹配呢?


主要的方式就两种:

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

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


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


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


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


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


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


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


如何进行手工探测Waf的过滤规则请看下一篇推文 浅谈Bypass Waf - 下(实战篇)


本文作者:Ms08067安全实验室

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/173189.html

Tags:
评论  (0)
快来写下你的想法吧!

Ms08067安全实验室

文章数:51 积分: 154

已出版《Web安全攻防》《内网安全攻防》《Python安全攻防》《JAVA代码安全审计(入门篇)》等书

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号