Web Socket安全测试

admin 2024年5月11日20:31:49评论25 views字数 1608阅读5分21秒阅读模式

点击上方 [蓝字] 关注我们

基本介绍

WebSocket是一种在单个TCP连接上进行全双工通信的协议

该通信协议于2011年被IETF定为标准RFC6455,并由RFC7936进行补充规范。此外,WebSocket API也被W3C定为标准。通过WebSocket,客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要进行一次握手,便可直接创建持久性的连接,并进行双向数据传输。

Web Socket安全测试

WebSocket 基础帧结构

Web Socket安全测试

抓包分析

WebSocket在建立连接时,HTTP通过Upgrade消息头来通知客户端需要采用WebSocket协议来完成这个请求,在发送完此响应最后的空行后,服务器就会切换到WebSocket协议,接口返回状态码为101,表示服务器已经理解了客户端的请求,需要升级协议。

在burp可以看到来回请求与响应:

Web Socket安全测试

在请求和响应头中包含几个字段:

Sec-WebSocket-Key ,由客户端随机生成的 16 字节值, 然后做 base64 编码, 客户端需要保证该值是足够随机, 不可被预测的 (换句话说, 客户端应使用熵足够大的随机数发生器), 在 WebSocket 协议中, 该头部字段必传, 若客户端发起握手时缺失该字段, 则无法完成握手。

Sec-WebSocket-Version ,指示 WebSocket 协议的版本, RFC 6455 的协议版本为 13, 在 RFC 6455 的 Draft 阶段已经有针对相应的 WebSocket 实现, 它们当时使用更低的版本号, 若客户端同时支持多个 WebSocket 协议版本, 可以在该字段中以逗号分隔传递支持的版本列表 (按期望使用的程序降序排列), 服务端可从中选取一个支持的协议版本。

安全问题

实际上与WebSockets有关的任何Web安全漏洞都可能出现:

传输到服务器的用户提供的输⼊可能会以不安全的方式进行处理,从而导致漏洞,例如SQL注⼊或XML外部实体注⼊。

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

本地测试学习

DVWS是基于Web Socket构建的WEB程序,在该程序中构建了多了个安全漏洞的场景,例如爆破、命令执行、文件包含的漏洞场景,并且可以使用 Burp Suite 等工具进行对Web Socket测试。

靶场地址:https://owasp.org/www-project-damn-vulnerable-web-sockets

Web Socket安全测试

爆破

由于burp无法爆破websocket协议,为了测试编写一个爆破脚本得到账号为admin密码为123456。

Web Socket安全测试
Web Socket安全测试
Web Socket安全测试

命令执行

直接发送ip地址给服务器,服务器对该输⼊IP进行ping操作。直接在参数后添加拼接符合和参数。

Web Socket安全测试
Web Socket安全测试
Web Socket安全测试

文件包含

点击页面中的单选框,点击请求后,呈现的数据不⼀样。

在websocket中显示的请求内容是:

pages/games.txt

pages/books.txt

Web Socket安全测试
使用burp进行测试,../../../etc/passwd,
当然还可以读取其他有意思的文件比如说
/root/.ssh/id_rsa、/etc/mtab 、/var/lib/
mlocate/mlocate.db、/root/.bash_history 等
Web Socket安全测试

WebSocket⻛险防御

WebSocket在实际使用中可能存在一些安全风险,需要进行相应的防御措施。

1. 使用 wss:// 协议(基于TLS的WebSockets)。

2. 硬编码WebSockets终结点的URL,当然不要将用户可控制的数据合并到此URL中。

3. 双向将通过WebSocket接收的数据视为不可信。在服务器和客户端上安全地处理数据,以防止基于输⼊的漏洞,例如SQL注⼊和跨站点脚本。

4. 在客户端和服务器端都要对接收和发送的数据进行严格的输入验证和输出转义,确保不会执行恶意脚本。

End

原文始发于微信公众号(刑天攻防实验室):Web Socket安全测试

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月11日20:31:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Web Socket安全测试https://cn-sec.com/archives/2731550.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息