云上攻防–云服务&&对象存储(域名接管)&&弹性计算(元数据泄露)
目录标题
- 云上攻防--云服务&&对象存储(域名接管)&&弹性计算(元数据泄露)
- 对象存储
- 权限配置错误
- 域名接管
- AK/SK泄漏:
- 弹性计算
- 元数据泄露
- 加固措施
对象存储
各个厂商对于对象存储的叫法不同,但是除了叫法基本没有其他区别。
- 对象存储各大云名词:
阿里云:OSS 腾讯云:COS 华为云:OBS
谷歌云:GCS 微软云:Blob 亚马逊云:S3
对于对象存储的漏洞或者说错误配置点如下
权限配置错误
- 权限Bucket授权策略:设置ListObject显示完整结构(类似于目录遍历)
- 权限Bucket读写权限:公共读写直接PUT文件任意上传,由于管理员配置对象存储时错误配置公共读写权限,使得任何人都可以进行写入,通过PUT方法即可任意上传文件。
域名接管
对象存储可以配置域名映射,接管域名即是Bucket存储桶绑定域名后,访问域名即访问对象存储中的存储桶,当存储桶被删除而域名解析未删除,访问域名时候显示关键信息NoSuchBucket时可以尝试接管。
接管流程:
1. 确认域名绑定存储桶(通过ping命令出现对象存储解析地址)2. 通过域名访问存储桶提示NoSuchBucket(没有这样的桶)3. 通过对象存储地址信息推断出存储桶名称、对象存储厂商、云存储所在城市4. 去对应得厂商创建对应城市对应名称的存储桶5. 再次访问域名即可访问到所创建的存储桶
当Bucket显示NoSuchBucket说明是可以接管的,如果显示AccessDenied则不行。
参考文章
阿里云 OSS 对象存储攻防
AK/SK泄漏:
通过泄露的AK/SK进行接管
- APP逆向源代码
- 小程序反编译
- JS代码泄露
- 代码托管平台泄露
- 接口泄露
得到AK/SK之后可以利用云服务工具直接连接相应服务进行任意操作,例如各云厂商的官方工具、CF利用工具等。
云业务 AccessKey 标识特征整理
弹性计算
元数据泄露
- 元数据
关于什么是元数据以下引用阿里云对于元数据的解释:
实例元数据(metadata)包含了弹性计算云服务器实例在阿里云系统中的信息,您可以在运行中的实例内方便地查看实例元数据,并基于实例元数据配置或管理实例。(基本信息:实例ID、IP地址、网卡MAC地址、操作系统类型等信息。实例标识包括实例标识文档和实例标识签名,所有信息均实时生成,常用于快速辨别实例身份。)
总的来说,元数据就是存储了一些服务器的关键信息。每个厂商的服务器都存在元数据,但是各个厂商的获取元数据的地址不同。
各厂商元数据获取地址:
阿里云元数据地址:http://100.100.100.200/latest/meta-data/
腾讯云元数据地址:http://metadata.tencentyun.com/latest/meta-data/
华为云元数据地址:http://169.254.169.254/openstack/latest/meta_data.json
亚马逊云元数据地址:http://169.254.169.254/latest/meta-data/
微软云元数据地址:http://169.254.169.254/
谷歌云元数据地址:http://metadata.google.internal/
具体查询方式可以查询云厂商官方说明
查询样式如下图:
- 访问控制
访问控制是云厂商提供的一种运维手段,可以将管理员用户的权限进行拆分,将部分权限交给其他用户。从而控制对于云服务资源的访问。
各云厂商对于访问控制的名称不同,阿里云称之为RAM。
- 利用条件
- 弹性计算配置RAM访问控制管理角色
- 获取服务器权限、发现SSRF漏洞、RCE等可以控制目标机器访问其他地址
配置RAM访问控制管理角色后获取元数据会多一项RAM。
依次进行访问特定地址后通过泄露的元数据信息得到AccessKeyId以及AccessKeySecret即可通过利用工具对目标账号下的资源进行接管,接管资源根据AK/SK的权限而定,也就是当前弹性计算所配置RAM角色权限大小而定。
根据元数据中泄露的AK/SK可以使用利用工具进一步利用。
云渗透项目CF,目前工具已经闭源,最新开源版本在0.5,网上应该可以找到开源版本。
加固措施
- RAM角色权限过大导致控制台被接管, 主要还是需要使用者严格遵守权限最小化的原则,在为 RAM 角色赋予权限时,避免赋予过高的权限,只赋予自己所需要的权限,这样可以将影响程度降到最低,但是这并不能治本
- 将实例上的元数据访问模式设置为加固模式 ,不过这种方法在攻击人员拿下实例权限后依然会通过获取token的方法来访问元数据
参考文章
阿里云控制台接管
阿里云 ECS 弹性计算服务攻防