Identify the AWS Account ID from a Public S3 Bucketb
| 2024-6-22
字数 1015阅读时长 3 分钟
We created this beginner-friendly lab to teach a technique that can find an AWS account ID given a public S3 bucket, and how this can be leveraged.
Note: The flag in this lab is the AWS account ID associated with the S3 bucket.
 
提供的内容
IP
Access key ID
Secret access key
54.204.171.32
AKIAWHEOTHRFW4CEP7HK
UdUVhr+voMltL8PlfQqHFSf4N9casfzUkwsW4Hq3
这个aksk没啥用
配置 aksk
 
whoami 看下
 
看 walkthrough 是这个 aksk 帮我们创建好了 工具利用所需的角色
 
这里我们选择自己建,主打一个学习,所以自己创
 
 
发现 s3 存储
 
没啥特别有用的
 
根据题目,我们的目的是获取这个桶的账户 ID
 
本质是利用  S3:ResourceAccount 策略返回结果的特征(是否报错)来判断账户 ID 是否属于某个 S3 桶,然后通配符如 1* 也可以用于判断,然后逐个用通配符即可大大降低匹配数量(然后,还能用二分法大大提高效率 😁,不过好像暂时没见有写利用,cfpx 上!)
 
先创建用户(用户名随意,我这里为 s3),然后用户先创建 policy
 
创建完成后(注意这是在自己的账户控制台)
notion image
 
然后到 角色 创建角色,信任关系为:
 
其中 Principal 为刚创建用户的 arn,我这里贪图方便权限策略直接选 AmazonS3ReadOnlyAccess 即可,角色名称 和 用户 那 assume 保持一致,即 get-s3-account-id
notion image
 
如果颗粒度想更细,创建时先不要选,等创建成功角色后,在 权限 → 添加权限 → 创建內联策略
 
然后回到用户 → 点击 s3 用户 → 安全凭证,新建个访问密钥,然后 aws configure 配置一下
 
然后就可以用
s3-account-search
Github
s3-account-search
Owner
WeAreCloudar
Updated
Dec 2, 2024
来拿到账户 ID了,原理就是一开始提到 S3:ResourceAccount 滥用
好,至此 flag 就拿到了
 
那知道账户 ID 在真实场景有什么用呢?我们可以用这东西来看看这个账户 ID 所有者有没有意外的暴露一些敏感信息在公共资源中,如 public EBS 和 RDS 快照
 
先查看桶的所在区 x-amz-bucket-region,一般的话,在同一个区的几率大些
 
切换区 → 搜 EC2 → Elastic Block Store 下的 快照 → 公有快照 → 筛选拥有者 即可
notion image
 
即可找到所有者的公开快照,虽然不一定有用,但万一在快照里分析到什么敏感信息呢?在另一个 lab 有公开 EBS 快照的利用
 
在检测漏洞利用方面,STS 操作发生在试图查找账户 ID 的人的账户中,存储桶所有者的账户看不到该账户。不过可以启用 S3 数据事件来检测,但需额外付费。
 
除了页面外,也可以走 CLI 来查看 EBS 快照
不过需要给这个 aksk 配 describe-snapshots 权限
Loading...
目录