首页 > 其他分享 >云安全基础知识

云安全基础知识

时间:2024-03-28 14:22:34浏览次数:21  
标签:存储 策略 s3 Object Bucket 基础知识 安全 teamssix

云服务

云服务,顾名思义就是云上的服务,简单的来说就是在云厂商(例如 AWS、阿里云)那里买的服务。

目前国内云厂商有阿里云、腾讯云、华为云、天翼云、Ucloud、金山云等等,国外有亚马逊的 AWS、Google 的 GCP、微软的 Azure 等等。

oss存储桶

对象存储(Object-Based Storage),也可以叫做面向对象的存储,现在也有不少厂商直接把它叫做云存储。

说到对象存储就不得不提 Amazon,Amazon S3 (Simple Storage Service) 简单存储服务,是 Amazon 的公开云存储服务,与之对应的协议被称为 S3 协议,目前 S3 协议已经被视为公认的行业标准协议,因此目前国内主流的对象存储厂商基本上都会支持 S3 协议。

在 Amazon S3 标准下中,对象存储中可以有多个桶(Bucket),然后把对象(Object)放在桶里,对象又包含了三个部分:KeyDataMetadata

image-20240220102601324

  • Key 是指存储桶中的唯一标识符,例如一个 URL 为:https://teamssix.s3.ap-northeast-2.amazonaws.com/flag,这里的 teamssix 是存储桶 Bucket 的名称,/flag 就是 Key
  • Data 就很容易理解,就是存储的数据本体
  • Metadata 即元数据,可以简单的理解成数据的标签、描述之类的信息,这点不同于传统的文件存储,在传统的文件存储中这类信息是直接封装在文件里的,有了元数据的存在,可以大大的加快对象的排序、分类和查找。

Bucket爆破

当不知道 Bucket 名称的时候,可以通过爆破获得 Bucket 名称,这有些类似于目录爆破,只不过目录爆破一般通过状态码判断,而这个通过页面的内容判断。

当 Bucket 不存在时有两种返回情况,分别是 InvalidBucketName 和 NoSuchBucket。

当 Bucket 存在时也会有两种情况,一种是列出 Object,另一种是返回 AccessDenied。

这样通过返回内容的不同,就可以进行 Bucket 名称爆破了,知道 Bucket 名称后,Key 的爆破也就很容易了。

Bucket接管

假如在进行渗透时,发现目标的一个子域显示如下内容

image-20240220102745599

通过页面特征,可以判断出这是一个 Amazon 的 S3,而且页面显示 NoSuchBucket,说明这个 Bucket 可以接管的,同时 Bucket 的名称在页面中也告诉了我们,为 test.teamssix.com

那么我们就直接在 AWS 控制台里创建一个名称为 test.teamssix.com 的 Bucket 就可以接管了

image-20240220102809586

创建完 Bucket 后,再次访问发现就显示 AccessDenied 了,说明该 Bucket 已经被我们接管了。

image-20240220102845671

将该 Bucket 设置为公开,并上传个文件试试

image-20240220102903611

在该子域名下访问这个 test.txt 文件

image-20240220102923735

在腾讯云的对象存储中,我们无法造成以上的操作,因为在腾讯云的对象存储域名中,有一个APPID,这个APPID来自我们的账户信息中

任意文件上传与覆盖

如果对象存储配置不当,比如公共读写,那么可能就会造成任意文件上传与文件覆盖。

image-20240220105901569

如果目标的对象存储支持 html 解析,那就可以利用任意文件上传进行 XSS 钓鱼、挂暗链、挂黑页、供应链投毒等操作。

Bucket Object 遍历

在 s3 中如果在 Bucket 策略处,设置了 s3:ListBucket 的策略,就会导致 Bucket Object 遍历

image-20240220110359896

在使用 MinIO 的时候,如果 Bucket 设置为公开,那么打开目标站点默认就会列出 Bucket 里所有的 Key。

image-20240220110720123

将 Key 里的值拼接到目标站点后,就能访问该 Bucket 里相应的对象了。

特定的 Bucket 策略配置

有些 Bucket 会将策略配置成只允许某些特定条件才允许访问,当我们知道这个策略后,就可以访问该 Bucket 的相关对象了。

例如下面这个策略:

image-20240222140439134

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "TeamsSixFlagPolicy",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::teamssix/flag",
            "Condition": {
                "StringLike": {
                    "aws:UserAgent": "TeamsSix"
                }
            }
        }
    ]
}

当直接访问 teamssix/flag 的时候会提示 AccessDenied

image-20240222140610593

而加上对应的 User-Agent 时,就可以正常访问了

image-20240222140632222

在实战中,可以去尝试读取对方的策略,如果对方策略没做读取的限制,也许就能读到。

其次在进行信息收集的时候,可以留意一下对方可能会使用什么策略,然后再去尝试访问看看那些原本是 AccessDenied 的对象是否能够正常访问。

Bucket 策略可写

修改策略获得敏感文件
现有以下 Bucket 策略

image-20240222140729808

可以看到根据当前配置,我们可以对 Bucket 策略进行读写,但如果想读取 s3://teamssix/flag 是被禁止的。

image-20240222140754146

因为当前策略允许我们写入 Bucket 策略,因此可以将策略里原来的 Deny 改为 Allow,这样就能访问到原来无法访问的内容了。

修改后的策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": [
                "s3:GetBucketPolicy",
                "s3:PutBucketPolicy"
            ],
            "Resource": [
                "arn:aws:s3:::teamssix"
            ]
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::teamssix/flag"
            ]
        }
    ]
}

这里将第 20 行由原来的 Deny 改成了 Allow

image-20240222140920373

当策略写入后,可以看到成功获取到了原本 Deny 的内容

image-20240222140943464

Bucket ACL 可写

列出目标 Bucket 提示被拒绝

img

查看目标 Bucket ACL 策略发现是可读的,且策略如下

aws s3api get-bucket-acl --bucket teamssix

img

查询官方文档,内容如下:

image-20240223140046643

通过官方文档,可以分析出这个策略表示任何人都可以访问、写入当前 Bucket 的 ACL

那么也就是说如果我们把权限修改为 FULL_CONTROL 后,就可以控制这个 Bucket 了,最后修改后的策略如下:

{
    "Owner": {
        "ID": "d24***5"
    },
    "Grants": [
	{
            "Grantee": {
                "Type": "Group", 
                "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
            }, 
            "Permission": "FULL_CONTROL"
        } 
    ]
}

将该策略写入

aws s3api put-bucket-acl --bucket teamssix --access-control-policy file://acl.json

image-20240226102602366

再次尝试,发现就可以列出对象了

image-20240226102625365

Object ACL 可写

读取 Object 时提示被禁止

image-20240226102726070

查看目标 Object 策略发现是可读的,且内容如下:

aws s3api get-object-acl --bucket teamssix --key flag

image-20240226102807538

这个策略和上面的 Bucket ACL 策略一样,表示任何人都可以访问、写入当前 ACL,但是不能读取、写入对象

将权限修改为 FULL_CONTROL 后,Object ACL 策略如下:

{
    "Owner": {
        "ID": "d24***5"
    },
    "Grants": [
	{
            "Grantee": {
                "Type": "Group", 
                "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
            }, 
            "Permission": "FULL_CONTROL"
        } 
    ]
}

将该策略写入后,就可以读取对象了

aws s3api put-object-acl --bucket teamssix --key flag --access-control-policy file://acl.json

image-20240226103001960

参考文档

https://zone.huoxian.cn/d/907-aws-s3

标签:存储,策略,s3,Object,Bucket,基础知识,安全,teamssix
From: https://www.cnblogs.com/tomyyyyy/p/18101589

相关文章

  • 网络安全体系框架
    网络安全体系框架目录一、引言1.网络安全问题的提出-------------------------------------------------2.网络安全体系框架设计的重要性---------------------------------------二、网络安全体系框架的设计理念1.总体设计理念---------------------------------------......
  • Day49:WEB攻防-文件上传&存储安全&OSS对象&分站&解析安全&解码还原&目录执行
    目录文件-解析方案-目录执行权限&解码还原目录执行权限解码还原文件-存储方案-分站存储&OSS对象分站存储OSS对象存储知识点:1、文件上传-安全解析方案-目录权限&解码还原2、文件上传-安全存储方案-分站存储&OSS对象文件-解析方案-目录执行权限&解码还原1......
  • 网络安全2024年为什么如此吃香?事实原来是这样....
    前言由于我国网络安全起步晚,所以现在网络安全工程师十分紧缺。俗话说:‘‘没有网络安全就没有国家安全’’为什么选择网络安全?十四五发展规划建议明确提出建设网络强国,全面加强网络安全保障体系和能力建设,加强网络文明建设,发展积极健康的网络文化。这是国家从战略高度把......
  • 0基础小白想转行做网络安全,该自学还是报班呢?
    伴随着时代的飞速发展,网络安全已在各个领域得到了广泛的应用,现已成为众多人心仪的热门行业。但由于网络安全行业的岗位大多数都是纯技术岗,导致很多人都在担心:0基础学网络安全会不会很难?自学能不能学会?其实,网络安全涉及的知识面很广、术语和理论知识都比较多,除了网络硬件知......
  • Java基础知识
    Java概述什么是Java?Java是SunMicrosystems于1995年首次发布的一种编程语言和计算平台。编程语言还比较好理解,那么什么是 计算平台 呢?计算平台是在电脑中运行应用程序(软件)的环境,包括硬件环境和软件环境。一般系统平台包括一台电脑的硬件体系结构、操作系统、运行时库......
  • 天翼云发布边缘安全加速平台AccessOne,四大产品能力助力企业安全高速发展
    本文分享自天翼云开发者社区《天翼云发布边缘安全加速平台AccessOne,四大产品能力助力企业安全高速发展》,作者:天翼云社区官方账号2023年5月30日全国科技工作者日,以“连接世界从边缘开始”为主题的天翼云边缘安全加速平台发布会在线上顺利举办。会上,天翼云重磅发布边缘安全加速平台......
  • 玩转云端|演唱会一票难求?快用天翼云边缘安全加速平台AccessOne!
    本文分享自天翼云开发者社区《玩转云端|演唱会一票难求?快用天翼云边缘安全加速平台AccessOne!》,作者:天翼云社区官方账号Super Idol的笑容虽然非常甜无数粉丝宝宝的心里却是有苦难言不少铁粉在遭遇一轮又一轮“缺货登记”之后不禁发出了灵魂之问:为什么手机屏幕都要戳穿了演唱......
  • 如何系统得自学python?(基础知识篇完)——12.面向对象
     一、面向对象为了方便了解,我们拿面向过程做一个对比例如:肚子饿了,想吃饭面向过程:去超市---买菜---卖肉---买米---回家---洗菜---切肉---炒菜---煮米饭---盛饭---开吃面向对象:点外卖总结:⾯向对象就是将编程当成是⼀个事物,对外界来说,事物是直接使⽤的,不⽤去管他内部的情......
  • 【论文速读】| 对大语言模型解决攻击性安全挑战的实证评估
    本次分享论文为:AnEmpiricalEvaluationofLLMsforSolvingOffensiveSecurityChallenges基本信息原文作者:MinghaoShao,BoyuanChen,SofijaJancheska,BrendanDolan-Gavitt,SiddharthGarg,RameshKarri,MuhammadShafique作者单位:纽约大学、纽约大学阿布扎比......
  • 保护主机安全,我来buff加成
    本文分享自华为云社区《【云图说】第303期保护主机安全,我来buff加成!》,作者:阅识风云。华为云主机安全服务(HSS)是提升主机、容器等工作负载安全性的产品,支持云上云下多主机以及容器的纳管接入,通过资产管理、漏洞管理、基线检查、病毒检测等功能,帮助企业更便捷、高效地管控主机、......