AWS - Elastic Beanstalk Enum

HackTricks को समर्थन दें

Elastic Beanstalk

Amazon Elastic Beanstalk एक सरल प्लेटफ़ॉर्म प्रदान करता है वेब एप्लिकेशन और सेवाओं को तैनात करने, प्रबंधित करने और स्केल करने के लिए। यह विभिन्न प्रोग्रामिंग भाषाओं और फ्रेमवर्क्स का समर्थन करता है, जैसे कि Java, .NET, PHP, Node.js, Python, Ruby, और Go, साथ ही Docker कंटेनरों का भी। यह सेवा व्यापक रूप से उपयोग किए जाने वाले सर्वरों के साथ संगत है, जिनमें Apache, Nginx, Passenger, और IIS शामिल हैं।

Elastic Beanstalk एक सरल और लचीला तरीका प्रदान करता है आपके एप्लिकेशन को AWS क्लाउड में तैनात करने के लिए, बिना अंतर्निहित इंफ्रास्ट्रक्चर की चिंता किए। यह स्वचालित रूप से क्षमता प्रावधान, लोड संतुलन, स्केलिंग, और एप्लिकेशन स्वास्थ्य निगरानी के विवरणों को संभालता है, जिससे आप अपने कोड को लिखने और तैनात करने पर ध्यान केंद्रित कर सकते हैं।

Elastic Beanstalk द्वारा बनाई गई इंफ्रास्ट्रक्चर Autoscaling Groups द्वारा EC2 (एक लोड बैलेंसर के साथ) में प्रबंधित की जाती है। जिसका मतलब है कि अंत में, यदि आप होस्ट को समझौता करते हैं, तो आपको EC2 के बारे में जानना चाहिए:

AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum

इसके अलावा, यदि Docker का उपयोग किया जाता है, तो ECS का उपयोग करना संभव है।

AWS - EKS Enum

Application & Environments

AWS Elastic Beanstalk में, "application" और "environment" की अवधारणाएं विभिन्न उद्देश्यों की सेवा करती हैं और तैनाती प्रक्रिया में अलग-अलग भूमिकाएं निभाती हैं।

Application

  • Elastic Beanstalk में एक application आपके एप्लिकेशन के स्रोत कोड, environments, और configurations के लिए एक तार्किक कंटेनर है। यह आपके एप्लिकेशन कोड के विभिन्न संस्करणों को एक साथ समूहित करता है और आपको उन्हें एक ही इकाई के रूप में प्रबंधित करने की अनुमति देता है।

  • जब आप एक application बनाते हैं, तो आप एक नाम और विवरण प्रदान करते हैं, लेकिन इस चरण में कोई संसाधन प्रावधान नहीं किया जाता है। यह केवल आपके कोड और संबंधित संसाधनों को व्यवस्थित और प्रबंधित करने का एक तरीका है।

  • आप एक application के भीतर कई एप्लिकेशन संस्करण रख सकते हैं। प्रत्येक संस्करण आपके कोड के एक विशिष्ट रिलीज़ से मेल खाता है, जिसे एक या अधिक environments में तैनात किया जा सकता है।

Environment

  • एक environment आपके एप्लिकेशन का एक प्रावधानित उदाहरण है जो AWS इंफ्रास्ट्रक्चर पर चल रहा है। यह वह जगह है जहां आपका एप्लिकेशन कोड तैनात और निष्पादित होता है। Elastic Beanstalk environment configuration के आधार पर आवश्यक संसाधनों (जैसे, EC2 instances, load balancers, auto-scaling groups, databases) का प्रावधान करता है।

  • प्रत्येक environment आपके एप्लिकेशन का एक ही संस्करण चलाता है, और आप विभिन्न उद्देश्यों के लिए कई environments रख सकते हैं, जैसे विकास, परीक्षण, स्टेजिंग, और उत्पादन।

  • जब आप एक environment बनाते हैं, तो आप एक प्लेटफ़ॉर्म (जैसे, Java, .NET, Node.js, आदि) और एक environment प्रकार (जैसे, वेब सर्वर या वर्कर) चुनते हैं। आप इंफ्रास्ट्रक्चर और एप्लिकेशन सेटिंग्स के विभिन्न पहलुओं को नियंत्रित करने के लिए environment configuration को भी अनुकूलित कर सकते हैं।

2 प्रकार के Environments

  1. Web Server Environment: यह वेब एप्लिकेशन और APIs की मेजबानी और सेवा करने के लिए डिज़ाइन किया गया है। ये एप्लिकेशन आमतौर पर आने वाले HTTP/HTTPS अनुरोधों को संभालते हैं। वेब सर्वर environment संसाधनों जैसे EC2 instances, load balancers, और auto-scaling समूहों का प्रावधान करता है ताकि आने वाले ट्रैफ़िक को संभाला जा सके, क्षमता का प्रबंधन किया जा सके, और एप्लिकेशन की उच्च उपलब्धता सुनिश्चित की जा सके।

  2. Worker Environment: यह पृष्ठभूमि कार्यों को संसाधित करने के लिए डिज़ाइन किया गया है, जो अक्सर समय लेने वाले या संसाधन-गहन संचालन होते हैं जिन्हें ग्राहकों को तत्काल प्रतिक्रिया की आवश्यकता नहीं होती है। वर्कर environment संसाधनों जैसे EC2 instances और auto-scaling समूहों का प्रावधान करता है, लेकिन इसमें लोड बैलेंसर नहीं होता क्योंकि यह सीधे HTTP/HTTPS अनुरोधों को नहीं संभालता है। इसके बजाय, यह Amazon Simple Queue Service (SQS) queue से कार्यों का उपभोग करता है, जो वर्कर environment और इसके द्वारा संसाधित कार्यों के बीच एक बफर के रूप में कार्य करता है।

सुरक्षा

Beanstalk में एक App बनाते समय 3 बहुत महत्वपूर्ण सुरक्षा विकल्प चुनने होते हैं:

  • EC2 key pair: यह वह SSH key होगी जो ऐप चलाने वाले EC2 instances तक पहुंच सकेगी।

  • IAM instance profile: यह वह instance profile है जो instances के पास होगी (IAM विशेषाधिकार)

  • स्वचालित रूप से उत्पन्न भूमिका को aws-elasticbeanstalk-ec2-role कहा जाता है और इसमें सभी ECS, सभी SQS, DynamoDB elasticbeanstalk और elasticbeanstalk S3 पर कुछ दिलचस्प पहुंच होती है, AWS प्रबंधित नीतियों का उपयोग करके: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.

  • Service role: यह वह भूमिका है जो AWS सेवा सभी आवश्यक कार्यों को करने के लिए उपयोग करेगी। Afaik, एक नियमित AWS उपयोगकर्ता उस भूमिका तक पहुंच नहीं सकता।

  • AWS द्वारा उत्पन्न इस भूमिका को aws-elasticbeanstalk-service-role कहा जाता है और यह AWS प्रबंधित नीतियों का उपयोग करती है AWSElasticBeanstalkEnhancedHealth और AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy

डिफ़ॉल्ट रूप से metadata version 1 अक्षम है:

Exposure

Beanstalk डेटा एक S3 bucket में संग्रहीत होता है जिसका नाम है: elasticbeanstalk-<region>-<acc-id> (यदि इसे AWS कंसोल में बनाया गया था)। इस बकेट के अंदर आपको एप्लिकेशन का अपलोड किया गया स्रोत कोड मिलेगा।

बनाई गई वेबपेज का URL है http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/

यदि आपको बकेट पर पढ़ने की पहुंच मिलती है, तो आप स्रोत कोड पढ़ सकते हैं और यहां तक कि संवेदनशील क्रेडेंशियल्स भी पा सकते हैं।

यदि आपको बकेट पर लिखने की पहुंच मिलती है, तो आप स्रोत कोड को संशोधित कर सकते हैं ताकि अगली बार जब इसे निष्पादित किया जाए तो IAM भूमिका को समझौता किया जा सके।

Enumeration

# Find S3 bucket
ACCOUNT_NUMBER=<account_number>
for r in us-east-1 us-east-2 us-west-1 us-west-2 ap-south-1 ap-south-2 ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-southeast-1 ap-southeast-2 ap-southeast-3 ca-central-1 eu-central-1 eu-central-2 eu-west-1 eu-west-2 eu-west-3 eu-north-1 sa-east-1 af-south-1 ap-east-1 eu-south-1 eu-south-2 me-south-1 me-central-1; do aws s3 ls elasticbeanstalk-$r-$ACCOUNT_NUMBER 2>/dev/null && echo "Found in: elasticbeanstalk-$r-$ACCOUNT_NUMBER"; done

# Get apps and URLs
aws elasticbeanstalk describe-applications # List apps
aws elasticbeanstalk describe-application-versions # Get apps & bucket name with source code
aws elasticbeanstalk describe-environments # List envs
aws elasticbeanstalk describe-environments | grep -E "EndpointURL|CNAME"
aws elasticbeanstalk describe-configuration-settings --application-name <app_name> --environment-name <env_name>
aws elasticbeanstalk describe-environment-resources --environment-name <env_name> # Get env info such as SQS used queues
aws elasticbeanstalk describe-instances-health --environment-name <env_name> # Get the instances of an environment

# Get events
aws elasticbeanstalk describe-events

Unauthenticated Access

AWS - Elastic Beanstalk Unauthenticated Enum

Persistence

AWS - Elastic Beanstalk Persistence

Privesc

AWS - Elastic Beanstalk Privesc

Post Exploitation

AWS - Elastic Beanstalk Post Exploitation
HackTricks को समर्थन दें

Last updated