AWS - Elastic Beanstalk Enum
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Amazon Elastic Beanstalk zapewnia uproszczoną platformę do wdrażania, zarządzania i skalowania aplikacji i usług internetowych. Obsługuje różnorodne języki programowania i frameworki, takie jak Java, .NET, PHP, Node.js, Python, Ruby i Go, a także kontenery Docker. Usługa jest zgodna z powszechnie używanymi serwerami, w tym Apache, Nginx, Passenger i IIS.
Elastic Beanstalk zapewnia prosty i elastyczny sposób na wdrażanie aplikacji w chmurze AWS, bez potrzeby martwienia się o infrastrukturę. Automatycznie zajmuje się szczegółami dotyczącymi prowizjonowania pojemności, równoważenia obciążenia, skalowania i monitorowania zdrowia aplikacji, co pozwala skupić się na pisaniu i wdrażaniu kodu.
Infrastruktura tworzona przez Elastic Beanstalk jest zarządzana przez Autoscaling Groups w EC2 (z równoważnikiem obciążenia). Oznacza to, że na koniec dnia, jeśli skomprymujesz hosta, powinieneś wiedzieć o EC2:
AWS - EC2, EBS, ELB, SSM, VPC & VPN EnumPonadto, jeśli używany jest Docker, możliwe jest korzystanie z ECS.
AWS - EKS EnumW AWS Elastic Beanstalk pojęcia "aplikacja" i "środowisko" pełnią różne funkcje i mają odrębne role w procesie wdrażania.
Aplikacja w Elastic Beanstalk to logiczny kontener dla kodu źródłowego aplikacji, środowisk i konfiguracji. Grupuje różne wersje kodu aplikacji i pozwala zarządzać nimi jako jedną jednostką.
Kiedy tworzysz aplikację, podajesz nazwę i opis, ale w tym etapie nie są przydzielane żadne zasoby. To po prostu sposób na zorganizowanie i zarządzanie swoim kodem i powiązanymi zasobami.
Możesz mieć wiele wersji aplikacji w ramach jednej aplikacji. Każda wersja odpowiada konkretnej wersji twojego kodu, która może być wdrożona w jednym lub więcej środowiskach.
Środowisko to przydzielona instancja twojej aplikacji działająca na infrastrukturze AWS. To gdzie kod twojej aplikacji jest wdrażany i wykonywany. Elastic Beanstalk przydziela niezbędne zasoby (np. instancje EC2, równoważniki obciążenia, grupy auto-skalowania, bazy danych) na podstawie konfiguracji środowiska.
Każde środowisko uruchamia jedną wersję twojej aplikacji, a ty możesz mieć wiele środowisk do różnych celów, takich jak rozwój, testowanie, staging i produkcja.
Kiedy tworzysz środowisko, wybierasz platformę (np. Java, .NET, Node.js itp.) oraz typ środowiska (np. serwer WWW lub pracownik). Możesz również dostosować konfigurację środowiska, aby kontrolować różne aspekty infrastruktury i ustawień aplikacji.
Środowisko serwera WWW: Jest zaprojektowane do hostowania i obsługi aplikacji internetowych i API. Te aplikacje zazwyczaj obsługują przychodzące żądania HTTP/HTTPS. Środowisko serwera WWW przydziela zasoby takie jak instancje EC2, równoważniki obciążenia i grupy auto-skalowania, aby obsługiwać ruch przychodzący, zarządzać pojemnością i zapewnić wysoką dostępność aplikacji.
Środowisko pracownika: Jest zaprojektowane do przetwarzania zadań w tle, które często są czasochłonne lub zasobożerne i nie wymagają natychmiastowych odpowiedzi dla klientów. Środowisko pracownika przydziela zasoby takie jak instancje EC2 i grupy auto-skalowania, ale nie ma równoważnika obciążenia, ponieważ nie obsługuje bezpośrednio żądań HTTP/HTTPS. Zamiast tego, konsumuje zadania z Amazon Simple Queue Service (SQS), które działa jako bufor między środowiskiem pracownika a zadaniami, które przetwarza.
Podczas tworzenia aplikacji w Beanstalk istnieją 3 bardzo ważne opcje bezpieczeństwa do wyboru:
Para kluczy EC2: To będzie klucz SSH, który będzie mógł uzyskać dostęp do instancji EC2 uruchamiających aplikację.
Profil instancji IAM: To jest profil instancji, który będą miały instancje (uprawnienia IAM).
Autogenerowana rola nazywa się aws-elasticbeanstalk-ec2-role
i ma interesujący dostęp do wszystkich ECS, wszystkich SQS, DynamoDB elasticbeanstalk i elasticbeanstalk S3, korzystając z zarządzanych polityk AWS: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.
Rola usługi: To jest rola, którą usługa AWS będzie używać do wykonywania wszystkich potrzebnych działań. O ile mi wiadomo, zwykły użytkownik AWS nie może uzyskać dostępu do tej roli.
Ta rola generowana przez AWS nazywa się aws-elasticbeanstalk-service-role
i korzysta z zarządzanych polityk AWS AWSElasticBeanstalkEnhancedHealth i AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
Domyślnie wersja metadanych 1 jest wyłączona:
Dane Beanstalk są przechowywane w wiadrze S3 o następującej nazwie: elasticbeanstalk-<region>-<acc-id>
(jeśli zostało utworzone w konsoli AWS). Wewnątrz tego wiadra znajdziesz przesłany kod źródłowy aplikacji.
URL utworzonej strony internetowej to http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
Jeśli uzyskasz dostęp do odczytu do wiadra, możesz odczytać kod źródłowy i nawet znaleźć wrażliwe dane uwierzytelniające w nim.
Jeśli uzyskasz dostęp do zapisu do wiadra, możesz zmodyfikować kod źródłowy, aby skomprymować rolę IAM, której aplikacja używa przy następnym uruchomieniu.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)