MinIO 是一种开源的对象存储服务,它兼容 Amazon S3 API,可以在私有云或公有云中使用。MinIO 是一种高性能、高可用性的分布式存储系统,它可以存储大量数据,并提供对数据的高速读写能力。MinIO 采用分布式架构,可以在多个节点上运行,从而实现数据的分布式存储和处理。
在集群部署的MinIO中,未经身份认证的远程攻击者通过发送特殊HTTP请求即可获取所有环境变量,其中包括MINIO_SECRET_KEY和MINIO_ROOT_PASSWORD,造成敏感信息泄露,最终可能导致攻击者以管理员身份登录MinIO。
MinIO verify接口存在敏感信息泄漏漏洞,攻击者通过构造特殊URL地址,读取系统敏感信息。
版本:RELEASE.2019-12-17T23-16-33Z <= MinIo < RELEASE.2023-03-20T20-16-18Z
访问 ip:9001/login
GET /api/v1/check-version HTTP/1.1
版本小于RELEASE.2023-03-20T20-16-18Z则存在漏洞。
漏洞poc:
POST /minio/bootstrap/v1/verify
拿到环境变量后,可以通过管理员权限访问自更新的接口来替换二进制文件getshell。
Github回溯版本2023-03-13T19-46-17Z版本为例:
访问main.go:
主函数指向:minio "github.com/minio/minio/cmd"
通过payload中的bootstrap路径,找到 bootstrap-peer-server.go:
找到接受http请求的函数,由getServerSystemCfg()接受参数
getServerSystemCfg()去获取环境变量skipEnvs[envK]。
skipEnvs[envK]包含环境变量信息。根据官方说明,MinIO在启动时会从环境变量中读取预先设置的用户和密码,默认情况下:minioadmin/minioadmin。
例如decom.sh下的预先设置密码:
当通过信息泄露获得账号密码后,可以登录MinIO替换更新二进制文件触发RCE。
MinIO对更新包虽然调用sha256sum校验,但是envMinisignPubKey为空,所以sha256sum失效了。
1、升级到安全版本RELEASE.2023-03-20T20-16-18Z,下载链接:https://github.com/minio/minio/releases/tag/RELEASE.2023-03-20T20-16-18Z。
2、临时修复方案,在waf上配置策略,拒绝所有post到/minio/bootstrap/v1/verify的请求。
https://github.com/Mr-xn/CVE-2023-28432
原文始发于微信公众号(第59号):CVE-2023-28432 MinIO的信息泄露漏洞分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论