【技术分享】WebSocket漏洞与防护详解

栏目: 后端 · 发布时间: 7年前

内容简介:【技术分享】WebSocket漏洞与防护详解
2017-05-02 14:15:48 阅读:237次 作者:Legendervi

【技术分享】WebSocket漏洞与防护详解

翻译: Legendervi

预估稿费:120RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

socket简介

一个socket是一次网络通信中的一个端点。socket总是分为两部分:一个IP地址和一个端口。

例如:当您访问www.securelayer7.net时,你的计算机和网站的服务器正在使用socket(端点)进行通信。网站的端点将是:www.securelayer7.net:80,你的计算机的端点将是你的IP地址,后跟任何随机端口号,如192.168.0.111:6574

关于WebSocket

传统上,HTTP活动是由客户端请求资源而服务器来提供服务。 服务器不能自己与客户端通话。但 这个限制已经被新技术WebSocket消除了。

WebSockets提供持久连接,也称为客户端和服务器之间的全双工连接,双方可以随时使用该连接开始发送数据。

它是如何工作的?

客户端 ,如 浏览器,加载具有WebSocket功能的网页。

【技术分享】WebSocket漏洞与防护详解

页面的源代码负责创建WebSocket连接。

【技术分享】WebSocket漏洞与防护详解

该脚本通过WebSocket握手建立WebSocket连接。此过程从客户端向服务器发送常规HTTP请求开始。此请求中包含upgrade请求头,通知服务器客户端希望建立WebSocket连接。

请求如下所示:

【技术分享】WebSocket漏洞与防护详解

值得注意的是,WebSocket使用ws作为访问方案而不是http。所以,上面的请求访问了:ws://127.0.0.1:9000 / websocket

如果服务器支持WebSocket(针对上述请求),则它将在其响应中使用upgrade请求头进行回复。

响应如下所示:

【技术分享】WebSocket漏洞与防护详解

在这个阶段,协议将从HTTP切换到WS。并且在浏览器和服务器之间建立全双工连接。

在这个例子中,我们有一个WebSocket功能,它回传客户端发送的所有单词。例如:如果用户键入单词“Hiii”,那么服务器也会用“Hiii”来回复。

请求:

【技术分享】WebSocket漏洞与防护详解

响应:

【技术分享】WebSocket漏洞与防护详解

用户界面:

【技术分享】WebSocket漏洞与防护详解

WebSockets的安全隐患

A.跨站WebSocket劫持

注意下面的请求。Origin头有不同的来源127.0.0.1:5555。该请求是使用受害者的cookie发送到WebSocket服务器。这意味着可以使用WebSocket发送类似于CSRF的攻击。

【技术分享】WebSocket漏洞与防护详解

但是,这种攻击不止像CSRF将POST数据发送到WebSocket服务器,它还会读取服务器响应。这是因为默认情况下WebSocket服务器不检查“Origin”头,它只是使用cookies检查经过身份验证的用户会话,并将响应发送回请求的“Origin”。

因此,在上述情况下,攻击者也可以读取响应,从而代表受害者控制双向通信。

防护:

检查请求的“Origin”头。既然,这个标题是为了防止跨源攻击。如果“Origin”不被信任,那么只需拒绝该请求。例如:如果您的网站的域名为www.example.com,请检查请求是否源自该来源,如果是,则处理该请求。如果否,则拒绝。

另一个解决方案是使用基于会话的个人随机令牌(就像CSRF-Tokens)。生成服务器端,并将它们放在客户端的隐藏字段中。并要求验证。

B.网络敏感信息泄露

就像HTTP是纯文本协议一样,WebSockets协议也称为纯文本。这导致攻击者捕获和修改网络上的流量。

防护:

建议使用加密(TLS)WebSockets连接。它的URI方案是wss://。默认端口为443。

如下演示,请求访问ws://127.0.0.1:900/websocket/。如果它是一个安全连接,那么请求将访问wss://127.0.0.1:900/websocket/。

C.拒绝服务

默认情况下,WebSockets允许无限制的连接导致DOS。以下是无限次连接到WebSocket服务器的小脚本。

【技术分享】WebSocket漏洞与防护详解

执行此脚本后,让我们看看WebSocket服务器的日志:

【技术分享】WebSocket漏洞与防护详解

我们可以看到,几秒钟内就已经完成了475个连接。这将耗尽服务器资源,最终导致DOS攻击。

防护:

使用基于IP的速率限制将有助于解决这个问题。

速率限制应允许5-10连接自由,即不进行任何安全检查。但在10个连接之后,如果同一个IP尝试连接,那么应该向用户显示验证码,以确保自动化 工具 不会产生恶意请求,同时合法用户不会被拒绝服务。

结论

WebSockets非常适合全双工通信,有许多聊天应用程序和社交网站使用。实现WebSockets使应用程序更具可用性和吸引力。但就像任何其他技术一样,也需要在考虑安全性的情况下使用。

参考文献

演示代码取自: https://github.com/ghedipunk/PHP-Websockets

【技术分享】WebSocket漏洞与防护详解 【技术分享】WebSocket漏洞与防护详解

本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。

原文链接:http://blog.securelayer7.net/owasp-top-10-penetration-testing-soap-application-mitigation/

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP5与MySQL5 Web开发技术详解

PHP5与MySQL5 Web开发技术详解

杜江 / 电子工业出版社 / 2007-11 / 79.00元

《PHP5与MySQL5 Web开发技术详解》(含光盘)是目前中文版本第一个真正介绍PHP5及MYSQL5新增语法与功能的权威宝典!一起来看看 《PHP5与MySQL5 Web开发技术详解》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换