AWS - Elastic Beanstalk Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Amazon Elastic Beanstalk एक सरल प्लेटफ़ॉर्म प्रदान करता है वेब अनुप्रयोगों और सेवाओं को तैनात, प्रबंधित और स्केल करने के लिए। यह विभिन्न प्रोग्रामिंग भाषाओं और ढांचों का समर्थन करता है, जैसे Java, .NET, PHP, Node.js, Python, Ruby, और Go, साथ ही Docker कंटेनरों का भी। यह सेवा व्यापक रूप से उपयोग किए जाने वाले सर्वरों के साथ संगत है, जिसमें Apache, Nginx, Passenger, और IIS शामिल हैं।
Elastic Beanstalk एक सरल और लचीला तरीका प्रदान करता है आपके अनुप्रयोगों को AWS क्लाउड में तैनात करने के लिए, बिना अंतर्निहित बुनियादी ढांचे की चिंता किए। यह स्वचालित रूप से क्षमता प्रावधान, लोड संतुलन, स्केलिंग, और अनुप्रयोग स्वास्थ्य निगरानी के विवरण को संभालता है, जिससे आप अपने कोड को लिखने और तैनात करने पर ध्यान केंद्रित कर सकते हैं।
Elastic Beanstalk द्वारा निर्मित बुनियादी ढांचे का प्रबंधन EC2 में Autoscaling समूहों द्वारा किया जाता है (एक लोड बैलेंसर के साथ)। इसका मतलब है कि दिन के अंत में, यदि आप होस्ट से समझौता करते हैं, तो आपको EC2 के बारे में जानना चाहिए:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enumइसके अलावा, यदि Docker का उपयोग किया जाता है, तो ECS का उपयोग करना संभव है।
AWS - EKS EnumAWS Elastic Beanstalk में, "अनुप्रयोग" और "पर्यावरण" के अवधारणाएँ विभिन्न उद्देश्यों के लिए कार्य करती हैं और तैनाती प्रक्रिया में अलग-अलग भूमिकाएँ होती हैं।
Elastic Beanstalk में एक अनुप्रयोग आपके अनुप्रयोग के स्रोत कोड, वातावरण, और कॉन्फ़िगरेशन के लिए एक तार्किक कंटेनर है। यह आपके अनुप्रयोग कोड के विभिन्न संस्करणों को एक साथ समूहित करता है और आपको उन्हें एक एकल इकाई के रूप में प्रबंधित करने की अनुमति देता है।
जब आप एक अनुप्रयोग बनाते हैं, तो आप एक नाम और विवरण प्रदान करते हैं, लेकिन इस चरण में कोई संसाधन प्रावधान नहीं किए जाते हैं। यह बस आपके कोड और संबंधित संसाधनों को व्यवस्थित और प्रबंधित करने का एक तरीका है।
आप एक अनुप्रयोग के भीतर कई अनुप्रयोग संस्करण रख सकते हैं। प्रत्येक संस्करण आपके कोड के एक विशिष्ट रिलीज़ के अनुरूप होता है, जिसे एक या अधिक वातावरण में तैनात किया जा सकता है।
एक वातावरण आपके अनुप्रयोग का एक प्रावधानित उदाहरण है जो AWS बुनियादी ढांचे पर चल रहा है। यह जहाँ आपका अनुप्रयोग कोड तैनात और निष्पादित होता है। Elastic Beanstalk वातावरण कॉन्फ़िगरेशन के आधार पर आवश्यक संसाधनों (जैसे, EC2 उदाहरण, लोड बैलेंसर, ऑटो-स्केलिंग समूह, डेटाबेस) को प्रावधान करता है।
प्रत्येक वातावरण आपके अनुप्रयोग के एकल संस्करण को चलाता है, और आपके पास विकास, परीक्षण, स्टेजिंग, और उत्पादन जैसे विभिन्न उद्देश्यों के लिए कई वातावरण हो सकते हैं।
जब आप एक वातावरण बनाते हैं, तो आप एक प्लेटफ़ॉर्म (जैसे, Java, .NET, Node.js, आदि) और एक वातावरण प्रकार (जैसे, वेब सर्वर या कार्यकर्ता) चुनते हैं। आप बुनियादी ढांचे और अनुप्रयोग सेटिंग्स के विभिन्न पहलुओं को नियंत्रित करने के लिए वातावरण कॉन्फ़िगरेशन को भी अनुकूलित कर सकते हैं।
Web Server Environment: यह वेब अनुप्रयोगों और APIs को होस्ट और सेवा देने के लिए डिज़ाइन किया गया है। ये अनुप्रयोग आमतौर पर आने वाले HTTP/HTTPS अनुरोधों को संभालते हैं। वेब सर्वर वातावरण संसाधनों को प्रावधान करता है जैसे EC2 उदाहरण, लोड बैलेंसर, और ऑटो-स्केलिंग समूहों को आने वाले ट्रैफ़िक को संभालने, क्षमता प्रबंधित करने, और अनुप्रयोग की उच्च उपलब्धता सुनिश्चित करने के लिए।
Worker Environment: यह पृष्ठभूमि कार्यों को संसाधित करने के लिए डिज़ाइन किया गया है, जो अक्सर समय-खपत करने वाले या संसाधन-गहन संचालन होते हैं जिन्हें ग्राहकों को तात्कालिक प्रतिक्रियाओं की आवश्यकता नहीं होती है। कार्यकर्ता वातावरण संसाधनों को प्रावधान करता है जैसे EC2 उदाहरण और ऑटो-स्केलिंग समूह, लेकिन इसमें लोड बैलेंसर नहीं होता क्योंकि यह सीधे HTTP/HTTPS अनुरोधों को संभालता नहीं है। इसके बजाय, यह Amazon Simple Queue Service (SQS) कतार से कार्यों का उपभोग करता है, जो कार्यकर्ता वातावरण और जिन कार्यों को यह संसाधित करता है, के बीच एक बफर के रूप में कार्य करता है।
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 अक्षम है:
Beanstalk डेटा एक S3 बकेट में संग्रहीत होता है जिसका नाम है: elasticbeanstalk-<region>-<acc-id>
(यदि इसे AWS कंसोल में बनाया गया था)। इस बकेट के अंदर आपको अनुप्रयोग के अपलोड किए गए स्रोत कोड मिलेंगे।
बनाई गई वेबपृष्ठ का URL है http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
यदि आपको बकेट पर पढ़ने की पहुँच मिलती है, तो आप स्रोत कोड पढ़ सकते हैं और यहां तक कि संवेदनशील क्रेडेंशियल्स भी पा सकते हैं।
यदि आपको बकेट पर लिखने की पहुँच मिलती है, तो आप स्रोत कोड को संशोधित कर सकते हैं ताकि अगली बार इसे निष्पादित करते समय IAM भूमिका को समझौता किया जा सके।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)