OSS存储桶漏洞总结

简介

OSS,对象存储服务,对象存储可以简单理解为用来存储图片、音频、视频等非结构化数据的数据池。相对于主机服务器,具有读写速度快,利于分享的特点。
OSS工作原理: 数据以对象(Object)的形式存储在OSS的存储空间(Bucket )中。如果要使用OSS存储数据,您需要先创建Bucket,并指定Bucket的地域、访问权限、存储类型等属性。创建Bucket后,您可以将数据以Object的形式上传到Bucket,并指定Object的文件名(Key)作为其唯一标识。
介绍几个概念:
Bucket:用户用来管理所存储Object的储物空间。
Object:OSS存储数据的基本单元。
Key:当存储文件(Object)时,需要指定此Object的名称(Key),后续您将通过这个Key来获取该Object的内容。 Key也可以用来模拟文件夹的一些属性。
Data:存储的数据本体。

参考

阿里云 OSS对象存储攻防
对象存储(OSS)攻防案例

环境搭建

购买某里云的OSS存储,很便宜一年9块钱。
创建一个Bucket。
在这里插入图片描述
默认情况下,Bucket是私有权限(private)。

相关漏洞及其成因

OSS遍历漏洞

Bucket Object遍历
因为将读写权限设置为了公共读( listobject),便会导致可存储桶遍历。
在这里插入图片描述
这里设置了权限为listobject,直接访问存储桶域名就能看到存储桶中的所有文件的列表。
在这里插入图片描述
使用ossx工具可以遍历下载全部文件,工具地址:https://github.com/source-xu/oss-x
在这里插入图片描述

Bucket桶爆破

当不知道 Bucket 名称的时候,可以通过爆破获得 Bucket 名称,这有些类似于目录扫描,只不过目录一般通过状态码判断,这里通过页面的内容判断。
NoSuchBucket:存储桶不存在。
在这里插入图片描述
InvalidBucketName:存储桶的名称不符合规范,属于无效的存储桶名称。
在这里插入图片描述
AccessDenied:存在,但无权限访问。
在这里插入图片描述
成功访问。
在这里插入图片描述

任意文件上传与覆盖

当存储桶的配置存储桶权限为可写,会导致攻击者可上传任意文件到存储桶中,或覆盖已经存在的文件。
使用PUT方法进行上传,任意覆盖文件。
上传。
在这里插入图片描述
在这里插入图片描述
覆盖。
在这里插入图片描述
在这里插入图片描述

Bucket 接管

利用条件相对苛刻一些,需要域名曾解析并绑定了一个存储桶也就是网站托管,存储桶被删除,但域名解析的 CNAME未删除,此时访问时会显示NoSuchBucket。
在这里插入图片描述

利用方法是新建一个同样的Bucket,储桶名称相同,并且启用网站托管(域名托管)。
在这里插入图片描述
利用的例子:Amazon S3 Bucket桶接管教程
大致就是按照流程接管,开启读取权限,然后上传一个文件。

AccessKeyId,SecretAccessKey泄露

获取目标的 AccessKeyId、SecretAccessKey 泄露,便能获取到目标对象存储的所有权限。
主要来源如下:
1、通过GitHub等开源平台中的源码可发现存在泄露的Key。
2、通过反编译APK,找到敏感信息。
3、在目标网站源码中找到。
这里用到的工具就是ossbrowser,参考官方文档安装连接即可控制。
安装并登录ossbrowser
在这里插入图片描述

Bucket 策略配置可写

若拥有Bucket Policy 的编辑权限,可以通过上传或修改一个新的配置。涉及的权限如下图。
在这里插入图片描述

修复方法

存储桶相关的漏洞基本都来自权限管理的问题。
修复方法如下:
1、应做好存储桶的权限管理。OSS鉴权详解
2、注意存储桶过期后及时关闭域名与存储桶的绑定。
3、避免敏感信息泄露。

最佳权限

官方建议是使用私有权限,对文件的所有访问操作需要进行身份验证。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/781235.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java高级重点知识点-21-IO、字节流、字符流、IO异常处理、Properties中的load()方法

文章目录 IOIO的分类 字节流字节输出流【OutputStream】字节输入流【InputStream】图片复制 字符流字符输入流【FileReader】字符输出流【FileWriter】 IO异常的处理(扩展知识)Properties属性集(java.util) IO Java中I/O操作主要是指使用 java.io 包下的…

iOS中多个tableView 嵌套滚动特性探索

嵌套滚动的机制 目前的结构是这样的,整个页面是一个大的tableView, Cell 是整个页面的大小,cell 中嵌套了一个tableView 通过测试我们发现滚动的时候,系统的机制是这样的, 我们滑动内部小的tableView, 开始滑动的时候&#xff0c…

想知道你的电脑能不能和如何升级RAM吗?这里有你想要的一些提示

考虑给你的电脑增加更多的RAM,但不确定从哪里开始?本指南涵盖了有关升级Windows PC或笔记本电脑中RAM的所有信息。 你需要升级RAM吗 在深入研究升级RAM的过程之前,评估是否需要升级是至关重要的。你是否经历过系统滞后、频繁的BSOD错误或应用程序和程序突然崩溃?这些症状…

Lock与ReentrantLock

在 Java 中,Lock 接口和 ReentrantLock 类提供了比使用 synchronized 方法和代码块更广泛的锁定机制。 简单示例: import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class ReentrantLockExample {pr…

聊一下Maven打包的问题(jar要发布)

文章目录 一、问题和现象二、解决方法(1)方法一、maven-jar-pluginmaven-dependency-plugin(2)方法二、maven-assembly-plugin 一、问题和现象 现在的开发一直都是用spring boot,突然有一天,要自己开发一个…

【CUDA】

笔者在学习Softmax实现时遇到了一个问题,很多文章直接将softmax的计算分成了五个过程,而没有解释每个过程的含义,尤其是在阅读这篇文章时,作者想计算最基本的softmax的效率,以展示可行的优化空间: 贴一个g…

MybatisX插件的简单使用教程

搜索mybatis 开始生成 module path:当前项目 base package:生成的包名,建议先独立生成一个,和你原本的项目分开 encoding:编码,建议UTF-8 class name strategy:命名选择 推荐选择camel:驼峰命…

Centos下rpm和yum执行卡住问题(已解决)

问题描述 执行rpm和yum卡住, 没有任何报错信息,且无法 ctrl c 终止,只能通过后台 kill -9 杀死。 问题排查: 查看yum日志:yum -vv 软件包 会发现卡在 loading keyring from rpmdb,即load DB存在问题。 …

MSPM0G3507——MPU6050读取数据显示在OLED上

移植的立创L1306的部分代码,亲测能用,要源码的评论即可,在CCSTHEIA打开

【代码管理的必备工具:Git的基本概念与操作详解】

一、Git 初识 1.提出问题 不知道你工作或学习时,有没有遇到这样的情况:我们在编写各种⽂档时,为了防止⽂档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出⼀个副本,比如: “…

推荐几款漂亮的代码字体

Visual Studio Code 中字体看时间长了就会产生幻觉,于是今天看到有人推荐漂亮的代码字体,于是自己也推荐几款: 需要注意的是,大部分网上的教程都建议使用混合字体,即使用微软雅黑与某种等宽字体混合。但事实上&#x…

(ECCV,2022)Mask-CLIP:从CLIP中提取自由密集标签

文章目录 Extract Free Dense Labels from CLIP相关资料摘要引言方法Mask-CLIPMask-CLIP 实验 Extract Free Dense Labels from CLIP 相关资料 代码:https://github.com/chongzhou96/MaskCLIP 论文:https://arxiv.org/abs/2112.01071 摘要 对比语言-…

接口测试分析、设计以及实现

接口相关理论 ui功能测试和接口测试哪个先执行?–为什么 结论:接口测试先执行 原因:ui功能测试需要等待前端页面开发完成、后台接口开发完后且前端与后端联调完成。ui功能测试与接口测试的区别? ui功能:功能调用&am…

windows上传app store的构建版本简单方法

我们在上传app store上架,或上传到testflight进行ios的app测试的时候,需要mac下的上传工具上传ipa文件到app store的构建版本上。 然而windows电脑这些工具是无法安装的。 因此,假如在windows上开发hbuilderx或uniapp的应用,可以…

程序升级bootloader

文章目录 概述什么是bootloader?为什么用?bootloader启动流程图步骤 下载过程代码获取本地配置信息获取主机传过来的配置信息bootloader发送2给上位机,上位机发送文件给bootloader根据网站复制CRC 烧写flasherase启动编译问题 概述 用keil编…

Halcon 产品周围缺口检测

*读取一张图像read_image (Image, 原图.jpg)*获取图像大小get_image_size(Image, Width, Height)*关闭已经打开的窗口dev_close_window ()*打开新窗口dev_open_window(0, 0, Width, Height, black, WindowHandle) //打开指定大小的窗口*对图像进行阈值操作threshold (Image, R…

【eMTC】eMTC 窄带以及带宽的关系

1 概述 eMTC 传输进行通信时,一般采用1.4M带宽,在和LTE小区联合部署时,需要将LTE的带宽分割成以1.4M带宽为粒度的单位,这个单位在协议上叫做窄带。 2 窄带定义 3 参考文献 36.211

图片高效管理神器,随机高度切割,一键生成灰色图片,个性化处理随心所欲

在数字化时代,图片已成为我们生活和工作中不可或缺的一部分。然而,面对海量的图片资源,如何高效管理、快速处理,成为了许多人头疼的问题。今天,我们为您带来了一款全新的图片高效管理神器_——首助编辑高手&#xff0c…

【沐风老师】3DMAX样条线增强工具SplinePro使用方法详解

3DMAX样条线增强工具SplinePro使用教程 3DMAX样条线增强工具SplinePro,允许创建选定的多条样条曲线形状的轮廓并删除交叉点。 【适用版本】 3dMax2019 - 2025 【安装方法】 1.解压缩后,确认SplinePro-0.2.0.mse和logo.png两个文件在同一文件夹中。 2.…

python+django 环境搭建以及post接口封装

1、搭建pythondjango环境 python 3.7.9的版本 具体参考之前的安装教程 django 使用 pip install django 会自动安装 检验安装版本: python -m django --version 2、创建django项目 django-admin startproject projectname 启动项目:python manage.py…