云原生服务攻防技术研究 - 初始访问
一、Bucket 公开访问
0x1:Bucket权限配置错误-公开访问
在创建Bucket桶时,默认是private的权限,存储桶的私有权限表明,只有该存储桶的创建者及有授权的账号才对该存储桶中的对象有读写权限,其他任何人对该存储桶中的对象都没有读写权限。
如果在错误的配置下,给了listobject权限,就会导致可遍历存储桶。
如果选择了”公共读“或者”公共读写“,则外部可以直接访问对应的KEY路径。
但是此时,外部是无法通过访问根目录列对象的。
如果想列出Object对象,只需要在Bucket授权策略中设置ListObject即可,
这样再当我们访问存储桶域名的时候就会发现,已经把我们存储桶的东西列出来了,
参考链接:
https://wiki.teamssix.com/CloudService/S3/bucket-brute-force.html
二、特定的Bucket策略配置
如果Bucket的权限配置错误的配置了 GetBucketPolicy 权限,可导致攻击者获取Bucket的详细策略配置信息。
我们尝试使用aliyun的cli获取policy,
可以看到,需要特定的UA或者特定的IP才可以访问。
攻击者通过获取Bucket策略,构造符合策略的特定访问条件,即可绕过Bucket策略的访问控制。
参考链接:
https://zone.huoxian.cn/d/918-oss
三、应用程序漏洞
攻击路径:
- SSRF -> EC2 Metadata API -> IAM临时Security Token -> AWS SSM -> RCE
- SSRF -> EC2 Metadata API -> IAM临时Security Token -> AWS Lambda -> RCE
- SSRF -> EC2 Metadata API -> IAM临时Security Token -> AWS S3 -> 信息泄漏
- RCE -> EC2 Metadata API -> IAM临时Security Token -> AWS EC2/S3/Lambda
- RCE -> EC2 Metadata API -> EC2 Userdata -> 敏感凭证 -> 其他EC2或者云服务
相关参考:
- AWS Elastic Beanstalk: https://www.notsosecure.com/exploiting-ssrf-in-aws-elastic-beanstalk/
- AWS SSM: https://hackerone.com/reports/401136
- AWS: https://blog.appsecco.com/getting-shell-and-data-access-in-aws-by-chaining-vulnerabilities-7630fa57c7ed
- CloudGoat(AWS): https://rhinosecuritylabs.com/aws/cloudgoat-walkthrough-rce_web_app/
- GCP: https://hackerone.com/reports/341876
参考链接:
http://avfisher.win/archives/1175