什么情况下,你需要识别WAF?
- 渗透测试人员在前期信息收集阶段,需要识别WAF,来思考如何绕过
- 运维人员在部署或更新WAF后,验证防护是否生效
- 安全厂商进行市场调研时,通过WAF识别分析目标客户群体的安全产品部署情况,发掘潜在商业机会
一、WAF基本分类
1. 云WAF
- 阿里云WAF
- 腾讯云WAF
- 华为云WAF
- Cloudflare
- AWS WAF
2. 硬件WAF
- 绿盟WAF
- 安恒明御WAF
- 启明星辰WAF
- F5 ASM
- 深信服WAF
3. 软件WAF
- ModSecurity
- OpenResty WAF
- Nginx WAF
- NAXSI
- WebKnight
二、WAF识别方法
不妨让我们先停下来,思考一下,在开始寻找识别WAF的具体方法之前
设想您是一名网站管理员,需要为自己的网站部署WAF防护。您会如何在Google中搜索相关信息?
是先上网搜索"如何给网站配置WAF"之类的问题吧。这时候你会发现,各大云服务商都有特别详细的产品介绍和部署文档。
比如你去看阿里云的WAF文档,它会告诉你:
① 要接入WAF,需要把你的域名CNAME解析指向 xxx.yundunwaf.com
② 配置完成后,你的网站响应头会包含这些特征…
③ 防护生效后,攻击会被拦截,显示这样的页面…
不限于此种方式,
所以,我们要先理解WAF是怎么工作的,特征是从哪来的,然后再谈如何识别WAF
1. HTTP响应头识别
1 | # 阿里云WAF特征 |
某些WAF特征只有在触发防护规则时才会显现
(1)基础特征检测方法
可以通过多种工具查看HTTP响应头来识别WAF特征:
- 使用curl命令:curl -v -I 目标网址
- 使用浏览器开发者工具查看Network面板
- 使用Burp Suite等抓包工具分析响应
- 通过Postman发送请求查看响应头
(2)特征显现
WAF的特征识别存在动态触发机制:在常规访问时,WAF可能处于静默状态,不显示明显特征标识。但当检测到潜在威胁请求(如SQL注入、目录遍历等payload)时,WAF会启动主动防护响应,在HTTP响应头中呈现出特定标识(例如Server: tengine等特征字段)。因此,进行WAF检测时请多尝试。



而华为云WAF,正常访问也可以看到Server标识为CloudWAF,明确标识云WAF

2. DNS解析 - CNAME
使用 nslookup -qt=CNAME 域名查看CNAME记录的方法,是因为大多数云WAF采用CNAME方式接入。当网站接入云WAF时,需要将域名解析指向WAF的CNAME地址,通过这个特征可以判断是否部署了云WAF以及具体是哪家的云WAF服务。局限性是仅适用于云WAF识别,无法识别硬件WAF。
如图所示,这个是华为云 Web 应用防火墙 (WAF)的解析记录

阿里云 Web 应用防火墙 (WAF)的解析记录
目前互联网上也有一些识别WAF的在线网站,其原理也是借助CNAME解析

3. 错误页面特征
- 阿里云: 特定的405页面样式
- Cloudflare: 特有的Challenge页面
- 安全狗: 带有特定logo的拦截页面
如图所示,这个是阿里云 Web 应用防火墙 (WAF)的解析记录

4. 主动探测方法
3.1 发送畸形请求
1 | GET /index.php?id=' |
3.2 特定payload测试
1 | # SQL注入测试 |
5. 常见WAF特征总结
阿里云WAF
- 响应头包含
aliyungf_tc - 自定义拦截页面包含阿里云特征
- 使用tengine服务器
Cloudflare
- 响应头包含
CF-RAY - Challenge页面特征明显
- 固定的5秒盾牌页面
腾讯云WAF
- 响应头包含
TWS - 特定的拦截提示页面
- 自定义错误码特征
三、识别工具推荐
- wafw00f
1 | wafw00f http://example.com |
- whatwaf
1 | python whatwaf.py -u http://example.com |
- Wafmap
1 | wafmap -u http://example.com |
- identYwaf
1 | https://github.com/stamparm/identYwaf/tree/master |
四、识别建议
WAF识别测试应采用多维度分析方法,避免过度依赖单一工具或特征造成误判,同时发送Payload注意需在合规授权前提下开展测试,控制发送频率等,确保不影响目标系统的正常运行。
五、WAF拦截界面
(1)阿里云WAF特征
等待更新……
六、自动化识别WAF的思路
等待更新……
域名、ip等区分