MeterSphere的一次越权审计

news2024/9/20 19:24:24

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新增了权限配置。

作者:罗晟

2024年9月9日

洞源实验室

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2149828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 微服务框架 HP-SOA v1.1.4

HP-SOA 功能完备,简单易用,高度可扩展的Java微服务框架。 项目主页 : https://www.oschina.net/p/hp-soa下载地址 : https://github.com/ldcsaa/hp-soa开发文档 : https://gitee.com/ldcsaa/hp-soa/blob/master/README.mdQQ Group: 44636872, 66390394…

解决selenium爬虫被浏览器检测问题

文章目录 专栏导读1.问题解析2.代码解析(Edge/Chrome通用)2.1 设置Edge浏览器选项:2.2 尝试启用后台模式2.3 排除启用自动化模式的标志2.4 禁用自动化扩展2.5 设置用户代理2.6 实例化浏览器驱动对象并应用配置2.7 在页面加载时执行JavaScript代码 3.完整代码(可直接…

[ IDE ] SEGGER Embedded Studio for RISC-V

一、FILE 二、Edit 三、View 四、Search 五、Navigate 六、Project 七、Build 7.1 编译 先选择一个目标类型,再选择编译。 八、Debug 九、Target 十、Tools 10.1 自定义快捷键 点击菜单项,通过Tools –> Options –> Keyboard,实现自…

初识Linux · 环境变量

目录 前言: 命令行参数 环境变量 直接看现象 更多的环境变量 尝试理解环境变量 前言: 今天介绍的是一个较为陌生的名词,环境变量,在学习环境变量之前,我们需要一定的预备知识,这个预备知识是命令行参…

HarmonyOS学习(十三)——数据管理(二) 关系型数据库

文章目录 1、基本概念2、运行机制3、默认配置与限制4、接口说明5、实战:开发“账本”5.1、创建RdbStore5.2、创建数据库5.3、增加数据5.4、删除数据5.5、修改数据5.6、查询数据5.7、备份数据库5.8、恢复数据库5.9、删除数据库 官方文档地址: 通过关系型…

堆的向下调整算法和TOPK问题

目录 1.什么是堆? 1.1 向下调整建堆的时间复杂度计算 1.2 堆的结构体设计 2.堆的功能实现: 2.1 堆的插入: 2.2 堆的删除: 2.3 堆排序: 2.4 向下调整建堆: 2.5 TOPK问题: 2.6 向上调整算…

对接金蝶云星空调用即时库存信息查询API(附JAVA实现)

文章目录 前言准备工作获取第三方授权权限与授权配置信息集成金蝶云SDK调用实现备注前言 对于有自己商品信息管理后台并且使用金蝶ERP系统管理物料的商家来说,将金蝶上物料的库存信息同步到管理后台就可以不用去金蝶上确认库存了,可以大大简化管理后台的库存变更工作,这篇文…

Call OpenAI API with Python requests is missing a model parameter

题意:使用 Python requests 调用 OpenAI API 时缺少 model 参数。 问题背景: Im trying to call OpenAI API from Python. I know they have their own openai package, but I want to use a generic solution. I chose the requests package for its f…

通义千问重磅开源Qwen2.5,性能超越Llama

Qwen2.5 新闻 9月19日云栖大会,阿里云CTO周靖人发布通义千问新一代开源模型Qwen2.5,旗舰模型Qwen2.5-72B性能超越Llama 405B,再登全球开源大模型王座。Qwen2.5全系列涵盖多个尺寸的大语言模型、多模态模型、数学模型和代码模型,每…

TransUNet: 通过Transformer的视角重新思考U-Net架构在医学图像分割中的设计|文献速递-Transformer架构在医学影像分析中的应用

Title 题目 TransUNet: Rethinking the U-Net architecture design for medical imagesegmentation through the lens of transformers TransUNet: 通过Transformer的视角重新思考U-Net架构在医学图像分割中的设计 01 文献速递介绍 卷积神经网络(CNNs&#xff…

计算机毕业设计之:教学平台微信小程序(

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

生信初学者教程(四):软件

文章目录 RRstudioLinux系统其他软件本书是使用R语言编写的教程,用户需要下载R和RStudio软件用于进行分析。 版权归生信学习者所有,禁止商业和盗版使用,侵权必究 R R语言是一种免费的统计计算和图形化编程语言,是一种用于数据分析和统计建模的强大工具。它具有丰富的统计…

CSP-CCF★201912-2回收站选址★

一、问题描述 二、解答 代码&#xff1a; #include<iostream> #include<map> using namespace std; struct rubbish{int x;int y; }rub[1000]; int n; void input(){cin>>n;for(int i0;i<n;i){cin>>rub[i].x>>rub[i].y;} } bool has(int p,…

【machine learning-八-可视化loss funciton】

可视化lossfunction loss funciton可视化损失函数等高图 loss funciton 上一节讲过损失函数&#xff0c;也就是代价函数&#xff0c;它是衡量模型训练好坏的指标&#xff0c;对于线性回归来说&#xff0c;模型、参数、损失函数以及目标如下&#xff1a;、 损失函数的目标当然…

什么品牌超声波清洗机质量好?四大绝佳超声波清洗机品牌推荐!

在快节奏的现代生活中&#xff0c;个人物品的清洁卫生显得至关重要。眼镜、珠宝饰品、手表乃至日常餐厨用具&#xff0c;这些频繁接触的物品极易累积污渍与细菌。拿眼镜为例&#xff0c;缺乏定期清洁会让油渍与尘埃积累&#xff0c;进而成为细菌的温床&#xff0c;靠近眼睛使用…

SCDN是服务器吗?SCDN防御服务器有什么特点?

SCDN确实具有一定的防DDoS攻击能力&#xff0c;SCDN防御服务器有什么特点&#xff1f;高防SCDN通过结合内容分发网络&#xff08;CDN&#xff09;和分布式拒绝服务&#xff08;DDoS&#xff09;防护技术&#xff0c;提供了更全面的网络保护措施。在充满网络攻击的互联网时代&am…

dev c++输出中文乱码解决 printf乱码解决

把编码换成utf8就行 打开eiditor options

左手研发,右手销量,比亚迪舍弃了什么?

早买早享受&#xff0c;晚买享折扣&#xff0c;是近一年来汽车消费市场的真实写照。 A级家轿价格下探至6、7万元&#xff1b;曾经20万起步的主流B级车&#xff0c;如今只要12万元就能入手&#xff1b;即使是BBA等豪华品牌&#xff0c;也开始降价促销换销量。买车更便宜了&…

乐观锁、悲观锁

一、悲观锁 悲观锁 (Pessimistic Locking)&#xff0c;具有强烈的独占和排他特性。它指的是对数据被外界修改持保守态度。因此&#xff0c;在整个执行过程中&#xff0c;将处于锁定状态。所以&#xff0c;悲观锁是一种悲观思想&#xff0c;它总认为最坏的情况可能会出现&#x…

【Elasticsearch系列十五】强大特性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…