OWASP ZAP与WebSocket测试
随着HTML5的缓慢普及,WebSocket技术将在越来越多的应用中出现。为了避免在客户测试中临时抱佛脚,我决定提前学习如何测试WebSocket应用。
最佳学习方式是从构建一个简单的WebSocket应用开始,然后通过代理工具观察其通信。我选择的Burp Suite目前不支持WebSocket,因此转向了OWASP Zed Attack Proxy(简称ZAP)——据称是唯一支持此功能的工具。
构建测试环境
我开发了一个名为SocketToMe的基础WebSocket应用,包含聊天、数字猜测游戏等功能。测试计划从流量拦截开始,逐步探索模糊测试。
基础拦截配置
ZAP默认监听8080端口,配置浏览器代理即可使用。如需修改端口,可通过Tools菜单→Options→Local Proxy进行设置。
WebSocket流量捕获
使用应用时,ZAP成功捕获了HTTP和WebSocket流量。查看WebSocket流量只需切换到WebSockets标签页,消息方向通过箭头标识(客户端发送或接收)。
消息重发功能
类似于Burp的Repeater功能,ZAP提供"Resend"选项:右键消息→选择"Resend…",在弹出的窗口中可修改消息内容、方向和Opcode(操作码)。
高级断点设置
要拦截并修改流量,可设置断点:右键消息→选择"Break…",指定方向、通道和Opcode。还支持使用正则表达式匹配特定载荷(如"3[0-9]“匹配包含3后接数字的消息)。
断点管理
在"Break Point"标签页中可查看所有已定义断点,通过右键菜单进行编辑、删除,或通过复选框临时禁用。
下期预告
由于篇幅限制,模糊测试内容将安排在第二部分《使用ZAP进行WebSocket模糊测试》中详细介绍。
感谢BruCON 5x5奖项对本项目的时间赞助