WAF简介
WAF( Web Application Firewall ) Web应用防火墙,部署在web应用程序前面,在用户请求到达web服务器前对用户请求进行扫描和过滤,分析并校验每个用户请求的网络包,确保每个用户请求有效且安全,对无效或有攻击行为的请求进行阻断或隔离。通过检查HTTP流量,可以防止源自web应用程序的安全漏洞(如注入漏洞、XSS漏洞、命令执行漏洞、文件包含漏洞等)的攻击。
检测大多数是基于“正则表达式”和“AI+规则”的方法,有一定的几率绕过
常用的12种WAF绕过方法
大小写绕过
注释符绕过
编码绕过
分块传输绕过
使用空字节绕过
关键字替换绕过
HTTP 协议覆盖绕过
白名单 IP 绕过
真实 IP 绕过
Pipline 绕过
参数污染绕过
溢出 WAF 绕过
WAF 的分类
(1)云 WAF 类1
(2)硬件 WAF 类2
(3)软件 WAF 类3
(4)网站内置 WAF 类4
WAF 常见的检测机制
- 异常协议检测:拒绝不符合 HTTP 标准的请求,也可以只允许符合 HTTP 协议的部分选项通过,也只有一些 Web 应用防火墙还可以严格限定 HTTP 协议中的松散或未被完全制定的选项
- 增强输入验证:对恶意字符加强拦截
- 即使补丁:及时屏蔽掉新型漏洞,避免攻击者进行攻击,依赖于 WAF 厂商对新型漏洞的及时响应速度
- 基于规则的保护和基于异常的保护:基于规则的保护可以提供各种 Web 应用的安全规则, WAF 生产商会维护这个规则库,并实时更新,用户可以按照这些规则对应用进行全方面的检测。基于机场的保护是基于合法应用数据建立模型,并以此为依据判断应用数据的异常
- 状态管理:能够判断用户是否第一次访问,将请求重定向到默认登陆页面并且记录事件,或对暴力破解行为进行拦截
- 其他防护技术:如隐藏表单、抗入侵规避技术、响应监视和信息泄露保护
- 配置规则:可以自定义防护的规则,如是否允许境外 IP 的访问等
WAF 识别
手工识别
HTTP 请求包分析响应数据
通过对网站的正常访问,查看响应的头部信息。
例如在 X-Powered-By 内显示 “anyu.qianxin.com” 的标识,代表安装了奇安信安域 WAF
通过访问不存在的页面来分析页面
访问一个不存在的二级页面,通过 404 页面显示的 LOGO 等信息来判断 WAF
请求恶意字符分析响应或敏感页面
在一个正常的 URL 后面加入常见的恶意字符,比如 " and 1=1 ",让WAF对其进行拦截,从输出内容判断 WAF 。敏感页面原理相同,通常情况下 WAF 会为 phpinfo 等页面设置为阻断,如访问 phpinfo.php 页面
工具识别
使用工具识别相较于手工识别更加准确方便,常用的工具为 WAFW00F
用法:python wafw00f.py url
或者使用经典工具 SQLMap
用法:python sqlmap.py -u "url" --identify-saf
但 sqlmap 自带的 WAF 规则太少,如果遇到规则库中没有的,但是存在 WAF 的则会显示 “Generic (Unknown)”
文章基于奇安信书籍《网络安全-攻防技术实战》仅供个人记录、学习使用