云原生服务攻防技术研究 - 权限提升
一、Bucket 策略可写
如果Bucket不当配置了 PutBucketPolicy 权限,攻击者可以通过上传新的Bucket策略覆盖旧策略,从而实现Bucket提权。
此时无法访问资源,也无法列对象,
攻击者可使用PUT方法,覆盖Bucket的策略,
此时我们可以正常访问Bucket的资源了,
参考链接:
https://zone.huoxian.cn/d/918-oss
二、Bucket ACL 可写
在Policy权限设置中,如果授权用户操作存储桶以及对象ACL的权限(GET、PUT),即使Policy中没有授权该用户读取存储桶、写入存储桶、读取对象、写入对象的权限,这个操作依然是及其危险的,因为该用户可以通过修改存储桶以及对象的ACL进行越权。
参考链接:
https://mp.weixin.qq.com/s/ncWGrMsIAvh9HEK1QC5IGQ
三、创建高权限角色
0x1:云账号角色的业务背景
在云上,企业与企业之间的交互无法避免,许多云服务商提出了企业与企业之间部分资源共享的解决方案,具体流程是一家企业创建一个角色并给予特定的策略指向另一家企业,并授权账号内特定的资源给这个角色。
站在攻击者的视角来说,当我们拥有一家企业的凭证,该凭证可以创建角色并授权资源时,我们便可以利用该业务去创建一个相对隐蔽的角色,去通过使用自己的账号跨账号切换角色获取该企业的所有资源。而这恰好对应了云安全攻防矩阵中持久化和权限提升模块。
在现阶段常规凭证利用中攻击者往往会创建一个可以登录云服务控制台的子账号进行持久化和权限提升,许多防御者会注意新建子账号用户,该方式隐蔽性较差,容易被发现。使用创建角色跨账号进行资源授权的这种方法可以做到一定的隐蔽性而且不会添加新账户。
0x2:阿里云可信Ram角色
可信实体为阿里云账号的RAM角色(注意:可信账号不能为ram子账号)。该RAM角色主要用于解决跨账号访问和临时授权问题,扮演角色的RAM用户可以是自己的阿里云账号,也可以是其他阿里云账号,意思是可以把ram实体当作跨账号管理资源授权的一个媒介。
可信ram角色跨账号资源授权与常见创建ram子账号区别:
- 1、隐藏性更高,可自定义角色名和描述词,无法在用户列表查询。
- 2、可拓展性更高。
可信账号前提:
- 1、该AK/SK或者子账号拥有ram权限。
- 2、需要另一个不同企业的aliyun账号。
下面进行一个简单的Demo演示,
- 1、添加可信ram角色
- 2、指向其他云账号(账号名为企业别名)
- 3、为角色授权
授权所有权限给指向其他企业的可信ram
- 4、登录另一个企业账号点击切换身份
- 5、角色切换至Ram可信角色
- 6、接管了所有资源
参考链接:
https://wiki.teamssix.com/CloudService/IAM/ https://mp.weixin.qq.com/s/2yaQ_W5K7BfmycMO2UcXJg