1. MeterSphere简介
MeterSphere是一个一站式开源持续测试平台,它提供了测试跟踪、接口测试、UI测试和性能测试等功能。它全面兼容JMeter、Selenium等主流开源标准,助力开发和测试团队实现自动化测试,加速软件的高质量交付。MeterSphere 的特点包括开源、一站式服务、全生命周期支持、持续测试能力以及团队协作支持。
MeterSphere的技术栈包括后端Spring Boot、前端Vue.js、中间件MySQL和Kafka、基础设施Docker和Kubernetes,以及测试引擎JMeter。
MeterSphere 提供了多租户、多角色的管理模型,用户可根据所在团队的实际情况进行灵活的租户体系映射。
- 系统:每个独立部署的 MeterSphere 即称为一套系统。
- 系统级角色:角色的权限范围为整个系统,常见的角色如系统管理员、系统成员,可管理整个系统内的租户、用户及测试资源,同时可变更修改系统级配置参数。
- 组织:MeterSphere 中的一级租户,可映射为不同的部门或者产品线。
- 组织级角色:角色的权限范围限定在某个组织当中,常见的角色如组织管理员及组织成员,可在组织中创建项目、发起测试、查看测试报告等。
- 项目:以项目纬度管理各种类型测试数据,各个项目间数据隔离。
- 项目级角色:角色的权限范围限定在某个项目当中,常见的角色如项目管理员、项目成员,可在项目中创建、修改、执行测试计划、功能测试用例、接口测试用例、查看测试报告等。
- 自定义角色:可创建不同所属类型的自定义角色,满足更多样化的团队管理及在线协作。
MeterSphere 的主要功能包括:
- 测试跟踪:提供测试用例管理、测试计划执行和测试报告自动生成等功能。
- 接口测试:提供API管理、Mock服务、场景编排和多协议支持。
- UI测试:基于Selenium实现的浏览器自动化测试,支持低代码自动化测试。
- 性能测试:兼容JMeter,支持分布式和高并发的性能测试。
MeterSphere的架构图如下:
MeterShpere各组件间的关系如下:
MeterSphere的角色关系图如下:
2.MetaShpere项目结构
GateWay:API 网关项目。
Eureka:服务注册中心。
工作台:MeterSphere 项目的工作台模块。
项目设置:MeterSphere 项目的项目设置模块。
测试跟踪:MeterSphere 项目的测试跟踪模块。
接口测试:MeterSphere 项目的接口测试模块。
UI 测试:MeterSphere 项目的UI 测试模块。
性能测试:MeterSphere 项目的性能测试模块。
系统设置:MeterSphere 项目的系统设置模块。
报告统计:MeterSphere 项目的报告统计模块。
Node Controller:为接口或者性能测试提供独立节点类型的测试资源池。
MySQL:MeterSphere 项目的主要数据均存储在 MySQL。
Redis:MeterSphere 项目登录用户的 Session 和任务队列信息存储在 Redis。
Minio:MeterSphere 项目的分布式对象存储模块。
Kafka:接收 JMeter 产生的接口测试或者性能测试的结果数据。
Prometheus:收集压力机及被测系统的监控数据。
Data Streaming:从 Kafka 中获取接口测试或者性能测试结果数据进行处理后存入 MySQL 数据库。
Docker Engine:为 Node Controller 提供 JMeter 容器运行环境。
Selenium Grid:为 UI自动化测试提供运行环境,支持分布式拓展。
3.越权漏洞分析
在MetaShpere系统的system-setting模块中,定义了多种管理配置功能,例如整个系统的用户、工作管理、用户组与权限等。
其中以下端点返回用户有关的信息,包含团队的workspaceId、id、azureDevopsId、zentaoId等诸多数据,通过Service层的方法getAllUserGroup返回,接收参数为url的路径变量userId,例如/user/group/all/{userId}。
getAllUserGroup方法的逻辑如下:
getAllUserGroup方法接收一个userid作为参数,查询该用户所属的所有用户组,并为每个用户组收集包括组ID、类型和相关资源ID在内的信息。对于工作空间类型和项目类型的用户组,还会额外收集工作空间或项目的信息。最终,方法会返回一个包含所有用户组信息的列表。
对比getAllUserGroup的Controller,editGroupPermission使用了shiro配置权限要求,只有在用户权限满足一定条件时才能访问该端点,而getAllUserGroup未配置任何权限,认证用户都可调用,因此产生了越权漏洞。
4.漏洞修复
查看commit记录,官方已经给getAllUserGroup这个Controller新增了权限配置。
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容