红队视角下的公有云基础组件安全

前言

“公有云是为广大用户、个人或企业提供的云基础设施。公有云就是第三方公有云供应商为用户提供可通过互联网访问的虚拟环境中的服务器空间。然后,用户可以通过购买云服务器、数据存储和其他与云相关的服务等公有云服务来访问这些服务器。虽然用户可通过互联网访问公有云,但数据将通过虚拟化与其他用户的数据隔离,以提高安全性。公有云供应商还主动确保其服务器不受漏洞影响,并使用最新的软件补丁进行更新。但最终还是由使用者负责数据在云中的使用,包括访问、身份验证、加密和应用程序配置。”

随着越来越多的企业将应用、存储上云,各大公有云提供了各种 IaaS、PaaS、SaaS 服务,针对公有云各组件的攻击面也伴随而生。公有云厂商在尽可能保证组件安全的前提下,由于各种基础配置还是由用户决定,因此仍然存在很多安全风险。

本文主要从红队视角讲述公有云基本服务中一些因配置问题产生的安全风险。

编者注:以下所有内容仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。

目录

 ● 云存储

 ● 云计算

 ● 容器集群

 ● 中间件

云存储

至于为什么一上来就讲述云存储,是因为目前很多云厂商使用自己原生的云存储去操作其他基本组件,很多功能都是基于对象存储完成的,所以,首先讲述云存储的安全问题,为以下攻击面做准备。

在对象存储中,用户所上传的文件都是以对象形式存储在云端,以对象形式形式存在的文件不具备可执行权限,再加上提供无层次结构的分布式存储产品,为用户提供单价较低且快速可靠的数据存储方案,所以现在的大趋势下很多企业选择将自己所有的静态文件(图片、网站静态文件、视频等)搬迁至对象存储上,由于对象存储一般都是托管在第三方,企业在自身安全建设时往往会忽视掉这一点,殊不知不安全的配置,也会带来很多安全问题。

国内常见的几家云厂商的对象存储如下:

腾讯COS:

https://cloud.tencent.com/product/cos

阿里OSS:

https://www.aliyun.com/product/oss
百度BOS:

https://cloud.baidu.com/product/bos.html
华为OBS:

https://www.huaweicloud.com/product/obs.html

七牛Kodo:

https://www.qiniu.com/products/kodo
又拍云USS:

https://www.upyun.com/products/file-storage

访问控制

创建空间时,可设置为公开空间或私有空间。

图片

●公开空间:可通过文件对象的 URL 直接访问。

●私有空间:文件对象的访问则必须获得拥有者的授权才能访问。

如果设置为公开空间,则任何知道URL链接的人都能访问,此类空间适合存放公共文件,如网站静态资源、用户头像等公开资源(理论上你的文件名设置得足够复杂,在一定程度上也能保证安全性,但还是不建议这样做),针对敏感文件,尽量还是选择私有空间,私有空间在访问时一般要加上签名信息才能访问。

目前大部分云厂商会提供类似https://bucket.s3-china-region.cloud.com/?ak=xxxx&sgin=xxxx&time=16xxxx的类似AWS S3 签名URL形式,或者直接兼容S3协议,以提供下载、上传、管理API,具体参数意义如下:

● AK用于控制用户权限

● Sign用于验证签名,一般的云厂商都会把AK、domain、URI、Query、Header等请求特征、身份特征以及时间戳拼接在一起,然后使用SK做为盐值进行hash,来生成最后的Sgin,用于校验此数据包是否合法。

● time是时间戳,用户标识此URL过期时间

上传风险

通过查阅相关文件,我们可以知道使用表单上传文件到 OSS的技术方案里,有三种实现方式:

1、在客户端通过JavaScript代码完成签名,然后通过表单直传数据到OSS。

2、在服务端完成签名,然后通过表单直传数据到OSS。

3、在服务端完成签名,并且服务端设置了上传后回调,然后通过表单直传数据到OSS。OSS回调完成后,再将应用服务器响应结果返回给客户端。

密钥泄露

在对象存储的SDK中,一般都会存在JavaScript的SDK,也就是支持用户前端上传的组件。

https://github.com/ali-sdk/ali-oss

一般来说,在安全的配置下,前端上传会使用子用户、或者临时密钥(STS token)的方式来进行,但是由于不严谨的开发,前端js文件、APK文件硬编码AK / SK的情况还是司空见惯,一般来说只需要在burpsuite里面搜索对应云AK的名字,例如AccessKey、SecretKey等。

图片

拿到了AccessKey、SecretKey就可以实现对OSS的完全控制,常见的方法有利用官网提供的API或者开源工具等对OSS进行管理操作。

任意文件覆盖

在某些业务场景下,可能会存在如下流程:

1、首先结合时间戳生成一个随机文件名

2、通过此文件名信息在后端获取该文件的上传签名

3、最后通过PUT或者POST上传

图片

这个时候,由于上传的路径是我们控制,所以我们可以通过修改签名路径的形式,来进⾏签名,从⽽去覆盖此存储桶下的任意⽂件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值