YS web socket存在横向越权漏洞,当前用户可任意查看其他用户的报警信息,可导致敏感信息泄漏【高】

YS web socket存在横向越权漏洞,当前用户可任意查看其他用户的报警信息,可导致敏感信息泄漏【高】

问题描述:

         YS使用定时轮询web socket的方式获取用户设备的报警信息(比如报警图片),在客户端向服务器发送轮询请求期间,若发生设备报警,则将报警信息将实时推送到客户端进行显示,但在此过程中,要查询的设备是通过和用户名绑定的,也就是说绑定指定的用户名,服务器就返回该用户对应的设备的报警信息,而不是当前登录用户的报警信息。

测试步骤:

1、  打开burp拦截代理,并启动http请求拦截功能。

2、  使用正常帐户登录YS(假设当前登录用户名为ouyy),并拦截如下web socket请求,将当前登录账户用户名改成其它某个存在的用户的用户名,如图所示:

3、  取消burp的http拦截功能,客户端将定时向服务器发送轮询请求,此时去触发hikwpf这个账户对应的设备进行报警,可以捕获到其报警信息,如图所示:

4、  在返回的信息中可以看到报警图片的URL,在浏览器地址栏中输入该URL,就可以看到hikwpf用户的设备的报警图片,如图所示:

备注:如果用户开启了安全模式,那么通过该URL访问的图像就是加密的,因此无法查看图像的内容。

问题扩展:

         从目前情况来看,webSocket模块和web后台是完全独立的,即webSocket不记录用户登录后session的状态,也就是说获取web socket session的请求和发送轮询的请求是不需要带上用户登录后的cookie的,因此,验证该问题实际上是不需要一个能合法登录的账户的。

解决建议:

1、  webSocket模块与web后台向结合,发送轮询请求时要携带当前登录用户认证后的cookie,通过cookie来控制报警信息应该发给谁。

 

总结:进入到物联网行业,保护用户隐私是非常重要的,而如何去保护用户隐私需要思考很多,此例子就是一个造成用户隐私泄露的典型例子。

时间: 2024-09-28 14:35:15

YS web socket存在横向越权漏洞,当前用户可任意查看其他用户的报警信息,可导致敏感信息泄漏【高】的相关文章

Web安全之越权操作:横向越权与纵向越权

参考:http://blog.csdn.net/github_39104978/article/details/78265433 看了上面的文章,对越权操作的概念还是比较模糊,不明确实际场景. 横向越权的情况: 用户登录模块中,假设用户在忘记密码(未登录)时,想要重置密码.假设接口设计为传参只用传用户名和新的密码. localhost:8080/user/forget_reset_password.do?username=aaa&passwordNew=xxx 用户先通过密码提示问题并回答问题成

WEB开发中常见的漏洞

一.SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击.SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞.在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取.更改.删除,以及进一步导致网站被嵌入恶意代码.被植入后门程序等危害. 通常情况下,SQL注入的位置包括: (1)表单提交,主要是POST请求,也包括GET请求: (2)URL参数提交,主要为GET请求

横向越权测试—安全漏洞

1.What——什么是横向越权? 横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源  纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源 例:用户A无法访问到北京区域的用户详情,用户A没有重置北京区域用户密码的权限. 但是通过获取到重置密码的接口url和对应用户的userid,用他的token执行重置密码的接口.重置成功!!!???  2.Why——出现原因是什么? 问题出现根本原因是: Java后端没有对相应的接口做相应的防止横向越权措施. 3.How——怎么找

web socket and web worker 基础原理及使用

个人认为HTML5最吸引人的两大功能, web socket 和 worker为构建高效能的web应用提供了新的参考方案. 大体来说,web socket提供更高效的传输协议,web worker提供多线程提高web应用计算效率.最近项目有用到,对应两个问题的解决,目前运行效果来看还是很不错. 这里主要是总结这两个技术的基础原理,和常用API.备忘,也列举关键掌握点,入门和基础使用足以. Web Socket websocket是一种协议,本质上和http,tcp一样.协议是用来说明数据是如何传

Html5之高级-14 Web Socket(概述、API、示例)

一.Web Socket 概述 Web Socket 简介 - Web Socket 是 HTML5 提供的在 Web应用程序中客户端与服务器端之间进行的非 HTTP 的通信机制 - Web Socket 实现了用 HTTP 不容易实现的服务器端的数据推送等智能通讯技术 Web Socket 的特点 - Web Socket 可以在服务器与客户端之间建立一个非 HTTP 的双向连接 - 这个连接时实时的,也是永久的 - 服务器端可以主动推送消息 - 服务器端不再需要轮询客户端的请求 - 服务器端

ASP.NET Web API上实现 Web Socket

1. 什么是Web Socket Web Socket是Html5中引入的通信机制,它为浏览器与后台服务器之间提供了基于TCP的全双工的通信通道.用以替代以往的LongPooling等comet style的实时解决方案.基于它们之间的比较以及Web Socket的优势参考https://www.websocket.org/quantum.html. 2. Web Socket如何工作 Connect Web Socket在建立之前需要先与后台服务器进行握手.具体来说通过如下Http请求: GE

web socket RFC6455 connection --asio C++11

#ifndef __APP_WEBSOCKET_CONNECTION_H__ #define __APP_WEBSOCKET_CONNECTION_H__ #include <asio.hpp> #include "tcp_connection.hpp" class websocket_connection : public tcp_connection { public: websocket_connection( const std::tr1::shared_ptr&l

Web Socket rfc6455 握手 (C++)

std::string data((const char*)buf->data(),bytes_transferred); recycle_buffer(buf); std::string key="Sec-WebSocket-Key:"; auto pos = data.find(key); auto posEnd = data.find("\r\n",pos); auto value = data.substr(pos + key.length(),pos

web socket RFC6455 frame 打包、解包

#ifndef __APP_WEBSOCKET_FRAME_H__ #define __APP_WEBSOCKET_FRAME_H__ #include "memory.hpp" class buffer; struct websocket_frame { websocket_frame(); ~websocket_frame(); static const unsigned int fix_min_len = 2; static const unsigned int fix_mask