WebSocket协议漏洞01:握手流程与八大致命风险

admin 2026-10-06 05:19:59 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文系统梳理WebSocket协议基础,对比ws与wss安全性差异,详解握手流程与帧类型,并重点列出八大致命风险,包括拒绝服务、明文通信、访问控制缺失、输入校验缺失、认证不当、隧道滥用、CSWSH劫持及服务端OOB问题,为渗透测试提供可操作的风险排查方向。 综合评分: 82 文章分类: 漏洞分析,WEB安全,渗透测试


WebSocket 协议漏洞 01:握手流程与八大致命风险

原创

Red Hunter Red Hunter

黑白之道

2026年10月5日 09:12 韩国

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

导语:聊天、股票行情、协同文档这些”实时”场景,几乎都是 WebSocket 在背后撑。它在 HTTP 之外开了一条全双工通道,却把 HTTP 那一套鉴权、输入校验、访问控制全抛给了开发者。今天先把协议基础和八大致命风险捋清楚,下一篇直接上 IDOR 与 DoS 实战。


一、协议方案:ws 和 wss 不是同一种东西

WebSocket 在浏览器端暴露成两个 URI 方案:

  • ws:// — 类比 HTTP,明文通信。和 HTTP 一样,握手包和后续消息帧全裸奔在网络里,咖啡厅 WiFi 抓包就能看到聊天内容。
  • wss:// — 类比 HTTPS,底层套 TLS(传输层安全协议)。握手包带证书校验,消息帧走加密通道,机场 WiFi 抓到的也是密文。

光看 URL 头一个字母差,性质差一档:ws 等同于 HTTP,wss 等同于 HTTPS。渗透测试里看到业务跑 ws://,可以直接把 TLS 缺失列为高危。


二、握手过程:HTTP 借壳上线,再也不回头

WebSocket 没有自己发明握手,而是借 HTTP 升级机制开场。客户端发一个长得像 HTTP 的请求,带两个关键头:

GET /chat HTTP/1.1
Host: target.example
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

服务端同意就回 101 Switching Protocols,从此这条 TCP(传输控制协议)连接升级为 WebSocket 通道,后续全是 WebSocket 帧,不再有 HTTP 请求行。攻击者最爱的就是这个”借壳”动作——可以借助 HTTP 基础设施(CDN、反向代理、负载均衡)做隐蔽跳板,因为前几个包看起来人畜无害。

要拆解握手,看 Sec-WebSocket-Key 和响应里的 Sec-WebSocket-Accept 是不是按 RFC 6455(WebSocket 协议标准)规则算的;不一致的话基本能判定是自研 WebSocket,要么是有洞,要么是 bug。


三、消息交互:双向帧不止是文本

握手完成后双方互发 WebSocket 帧,每帧有自己的操作码(Opcode,标识帧类型)和 Payload(载荷)。关键几类帧:

  • 0x1 文本帧 — UTF-8 编码的字符串,最常见
  • 0x2 二进制帧 — 字节流,音视频、协议转发常用
  • 0x8 关闭帧 — 任意一方发,对端回一个就拆连接
  • 0x9 Ping / 0xA Pong — 心跳保活

测的时候两个工具必备:

  • Burp Suite — Proxy 直接拦 WebSocket 消息,每条都能改、重放、批量发,配合 Match & Replace 还能做注入
  • Simple Web Socket 浏览器扩展 — 不用启 Burp,直接在 DevTools(浏览器开发者工具)里当客户端连,配合历史 Payload 重放特别顺手


四、八大致命风险清单

按从底向上被砍次数排:

  1. 拒绝服务(DoS) — 协议不限制单 IP(互联网协议地址)连接数,循环握手+慢帧就能塞满服务端 fd(文件描述符)池。最阴的是”长连接挂空”,客户端连上不发心跳,服务端一直占着连接。
  2. 明文通信 — 用 ws:// 跑敏感业务,TCP 重置攻击 + 中间人抓包就能把聊天记录、Token(身份令牌)一锅端。
  3. 访问控制缺失 — HTTP 路由上有鉴权,WebSocket 升级包经常被反向代理当成普通流量放过去,业务层只校验登录态、不校验 WS 帧里的参数。
  4. 输入校验缺失 — 服务端信任帧内容直接拼 SQL(结构化查询语言)/Shell/HTML,等于把 HTTP 那套注入面在 WS 通道上重演一遍。
  5. 认证缺失或不当 — 升级包不带 Token、握手完成后才校验身份,会出现”先连接、再认证”的竞态,恶意脚本可在这中间发一帧拿到未授权数据。
  6. 隧道滥用 — WebSocket 帧体是二进制,可以塞任意协议(DNS、SSH、ICMP 即互联网控制报文协议)。内网里被攻陷的 WebSocket 端点能直接成为出网跳板,绕过防火墙 egress(出向流量)规则。
  7. 跨站 WebSocket 劫持(CSWSH) — 类比 CSRF(跨站请求伪造),恶意页面诱导用户浏览器对目标域发起 WebSocket 握手,复用用户 Cookie 过鉴权。比 CSRF 更阴,因为连接是常驻的。
  8. 服务端 OOB(带外)问题 — 协议解析器本身的内存越界、整数溢出,常出现在自研/魔改实现上。CVE-2023-38545 这种就是典型代表。

五、下一篇预告

光知道有这些风险还不够,下一篇 day14 直接上两个最常砍下来的:

  • IDOR 横向越权 — 聊天协议里 sid(会话标识)、uid(用户标识)这些参数不校验发起人,改一个值就能替别人发消息
  • 应用层 DoS — 循环建连 + 长帧体 + 慢消息三种打法,把服务端资源耗干

中间夹一份可直接复用的 Burp 拦截模板。


六、素材出处

  • Learn365 Day 13 原文:https://github.com/harsh-bothra/learn365/blob/main/days/day13.md
  • WebSocket Top 7 漏洞(Neuralegion):https://www.neuralegion.com/blog/websocket-security-top-vulnerabilities/
  • RFC 6455:WebSocket 协议标准

👇 点击阅读原文,访问我的网站



免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。

本文转载自:黑白之道 Red Hunter Red Hunter《WebSocket 协议漏洞 01:握手流程与八大致命风险》

能用就行 网络安全文章

能用就行

文章总结: 本文为Khan安全团队于2026年10月5日发布的简短文章,标题为能用就行,内容仅涉及小说阅读器相关描述,未提供具体技术细节或实质性安全内容,缺乏可
评论:0   参与:  0