WebSocket
概述
WebSocket 是一种网络通信协议,用于在客户端(如浏览器)和服务器之间建立全双工、持久性连接。与传统 HTTP 协议不同,WebSocket 允许服务器主动推送数据给客户端,无需客户端反复发起请求。
WebSocket 应用场景
- 网页聊天与社交应用微信网页版、Slack、Discord
- 在线游戏与虚拟竞技网页版《Agar.io》、多人游戏(如 MMORPG)
- 金融与交易平台Robinhood、币安交易所
- 协同编辑与远程办公Google Docs、腾讯文档
URI 格式
- **ws://**类似于 HTTP,使用明文传输,默认端口 80。格式:
ws://host[:port]path[?query] - **wss://**类似于 HTTPS,使用 TLS 加密传输,默认端口 443。格式:
wss://host[:port]path[?query]
WebSocket 抓包
实验室
- 操纵 WebSocket 消息以利用漏洞
- 操纵 WebSocket 握手以利用漏洞
WebSocket 靶场
项目地址: DVWS
环境搭建
apt install git
apt install docker
apt install docker-compose
docker pull tssoffsec/dvws
docker run -d -p 80:80 -p 8080:8080 tssoffsec/dvws- 修改 HOSTS 指向:
xx.xx.xx.xx dvws.local
常见漏洞
除常规漏洞外,WebSocket 较易出现以下问题:
- CSWSH(跨站点 WebSocket 劫持)
- 类似于 CSRF 漏洞,若未验证请求源,任意来源可连接 WebSocket 服务器进行数据交互。
- 攻击方式:构造恶意页面,诱导用户访问,借助用户身份信息建立 WebSocket 连接,劫持用户身份。
- XSS 跨站脚本
- 业务验证问题
- DoS 攻击
通讯 WebSocket
案例
- 上述靶场的爆破实验(Python)
- 上述靶场的在线聊天(HTML+JS)