一、测试前的准备
-
明确测试目标
- 确定 WAF 部署的位置(如 API 网关、反向代理、移动端 SDK 等)。
- 明确需验证的攻击类型(如 SQL 注入、XSS、CSRF、恶意请求篡改等)。
-
搭建测试环境
- 使用沙盒环境或镜像环境,避免影响生产数据。
- 配置抓包工具(如 Burp Suite、Charles)监控移动应用与服务器的通信。
-
获取授权
- 确保测试行为符合公司安全策略和法律要求。
二、攻击模拟与拦截验证
1. 常规 Web 攻击测试
- 工具:Burp Suite、OWASP ZAP、SQLMap。
- 测试方法:
- SQL 注入:在请求参数中插入
' OR 1=1 --
等 Payload,观察响应是否被拦截。 - XSS:提交
<script>alert(1)</script>
,检查页面是否执行脚本或返回 403 错误。 - CSRF:构造跨站请求伪造数据包,验证 WAF 是否阻止非同源请求。
- SQL 注入:在请求参数中插入
2. 移动端专属攻击测试
- 中间人攻击(MITM):通过代理工具解密 HTTPS 流量,修改请求参数后重放,测试 WAF 是否拦截篡改后的请求。
- 恶意请求频率限制:使用工具(如 JMeter)模拟高频请求,验证 WAF 的速率限制功能。
- 数据篡改:修改请求头(如
User-Agent
、X-Forwarded-For
),测试 WAF 是否识别异常请求。
3. 0day 漏洞测试
- 利用已知未公开漏洞(需获得授权),验证 WAF 对新型攻击的防护能力。
三、结果分析与验证
-
响应码验证
- 正常请求:200 OK。
- 攻击请求:若被拦截,应返回 403 Forbidden、404 Not Found 或自定义错误页面。
-
日志分析
- 检查 WAF 日志是否记录攻击事件(如请求时间、IP、攻击类型)。
- 对比抓包工具记录的请求与 WAF 日志的匹配性。
-
误报与漏报测试
- 误报:发送正常业务请求,验证是否被错误拦截。
- 漏报:使用已知漏洞攻击,确认 WAF 是否未响应。
四、优化建议
-
规则调优
- 针对移动应用场景,关闭不适用的规则(如 PC 端浏览器指纹识别)。
- 添加移动端专属规则(如限制特定 SDK 的异常调用)。
-
性能测试
- 使用 JMeter 模拟高并发请求,验证 WAF 是否影响应用响应速度。
-
自动化集成
- 将 WAF 测试集成到 CI/CD 流程中,定期验证拦截效果。
五、注意事项
- 避免在生产环境直接测试,防止数据泄露或服务中断。
- 测试前备份 WAF 配置,测试后恢复原状。
- 关注 WAF 厂商的更新,及时升级规则库。
示例工具链
工具名称 | 用途 |
---|---|
Burp Suite | 抓包、修改请求、自动化测试 |
OWASP ZAP | 漏洞扫描、攻击模拟 |
SQLMap | SQL 注入专项测试 |
JMeter | 压力测试、请求频率模拟 |
Charles Proxy | 移动端 HTTPS 流量分析 |
通过以上方法,可系统性验证移动应用中 WAF 的拦截效果,确保其在真实攻击场景下的有效性。