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 较易出现以下问题:

  1. CSWSH(跨站点 WebSocket 劫持)
    • 类似于 CSRF 漏洞,若未验证请求源,任意来源可连接 WebSocket 服务器进行数据交互。
    • 攻击方式:构造恶意页面,诱导用户访问,借助用户身份信息建立 WebSocket 连接,劫持用户身份。
  2. XSS 跨站脚本
  3. 业务验证问题
  4. DoS 攻击

通讯 WebSocket

案例

  • 上述靶场的爆破实验(Python)
  • 上述靶场的在线聊天(HTML+JS)