AWS - Elastic Beanstalk Enum

Support HackTricks

Elastic Beanstalk

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

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

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

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

Application & Environments

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

Application

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

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

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

Environment

  • एक वातावरण आपके अनुप्रयोग का एक प्रावधानित उदाहरण है जो AWS बुनियादी ढांचे पर चल रहा है। यह जहाँ आपका अनुप्रयोग कोड तैनात और निष्पादित होता है। Elastic Beanstalk आवश्यक संसाधनों (जैसे, EC2 उदाहरण, लोड बैलेंसर, ऑटो-स्केलिंग समूह, डेटाबेस) को वातावरण कॉन्फ़िगरेशन के आधार पर प्रावधान करता है।

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

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

2 types of Environments

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

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

Security

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

  • EC2 key pair: यह SSH कुंजी होगी जो ऐप चला रहे EC2 उदाहरणों तक पहुँच सकेगी।

  • IAM instance profile: यह instance profile है जो उदाहरणों के पास होगा (IAM विशेषाधिकार)।

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

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

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

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

Exposure

Beanstalk डेटा एक S3 बकेट में संग्रहीत होता है जिसका नाम है: 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

अनधिकृत पहुँच

स्थिरता

विशेषाधिकार वृद्धि

पोस्ट शोषण

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

Last updated