CVE-2023-28432 Minio信息泄露导致命令执行
信息泄露
https://github.com/minio/minio/security/advisories/GHSA-6xvq-wj2x-3h3q
从官方漏洞描述中可以直观的看出,该漏洞的入口为minio/cmd/bootstrap-peer-server.go#
VerifyHandler
路由调用如下
cmd/routers.go#configureServerHandler
->registerDistErasureRouters
->registerBootstrapRESTHandlers
->VerifyHandler
在进入最终的handler之前,存在一个限制条件:分布式部署minio
由于该接口没有进行鉴权处理,导致环境信息泄露
POC
|
|
命令执行
代码分析
接口文件:cmd/admin-handlers.go#ServerUpdateHandler
在Minio中存在UpdateAPI,通过传入的URL远程下载二进制文件对指定的minio进行更新
程序下载完成后会对下载的服务端进行校验
由于旧版本中更新过程中默认公钥为空,所以构造的恶意文件只需要满足hash与sha256对应即可实现更新恶意服务端导致RCE
简单实现
配置文件服务器
构造恶意服务端代码已经有大佬完成,在原minio服务端代码基础上添加了全局的恶意路由用来命令执行
https://github.com/AbelChe/evil_minio
下载后需要将该项目编译
|
|
注:编译时可能会由于目标系统底层架构不同导致服务崩溃,需要谨慎
编译完成后查看该文件的sha256值
|
|
由于minio在处理sha256时做了其他操作,所以恶意文件命名按官方命名
将恶意服务端二进制文件命名为:minio.RELEASE.2023-03-24T21-41-23Z
并在文件服务器中新增:minio.RELEASE.2023-03-24T21-41-23Z.sha256sum文件,内容为
|
|
内容中的sha256sum填入恶意二进制文件的sha256
启动好的文件服务器如下
配置Minio Client
下载地址:https://dl.min.io/client/mc/release/windows-amd64/mc.exe
添加服务
|
|
查看服务的存储桶(为了查看是否添加成功)
|
|
使用MC对指定minio服务进行更新,实现命令执行
|
|
更新结束后访问minioAPI节点,由于我们使用的项目中恶意文件参数为alive,所以下图会通过这个参数进行命令执行,执行结果如下
修复方案
在新版本中Minio修复了这个问题,添加了默认公钥
https://github.com/minio/minio/commit/05444a0f6af8389b9bb85280fc31337c556d4300
修复方案
厂商已经在该接口处添加了鉴权处理