AWS - Elastic Beanstalk Enum
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Elastic Beanstalk
Amazon Elastic Beanstalk zapewnia uproszczoną platformę do wdrażania, zarządzania i skalowania aplikacji internetowych i usług. 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 zasobów, równoważenia obciążenia, skalowania i monitorowania stanu 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 skompromitujesz hosta, powinieneś wiedzieć o EC2:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
Ponadto, jeśli używany jest Docker, możliwe jest korzystanie z ECS.
Aplikacja i Środowiska
W AWS Elastic Beanstalk pojęcia “aplikacja” i “środowisko” pełnią różne funkcje i mają odrębne role w procesie wdrażania.
Aplikacja
- 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 organizację i zarządzanie swoim kodem oraz 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
- Środowisko to przydzielona instancja twojej aplikacji działająca na infrastrukturze AWS. To tam wdrażany i wykonywany jest kod aplikacji. 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.
2 typy Środowisk
- Środowisko serwera WWW: Jest zaprojektowane do hostowania i obsługi aplikacji internetowych oraz 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.
Bezpieczeństwo
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-rolei 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-rolei korzysta z zarządzanych polityk AWS AWSElasticBeanstalkEnhancedHealth oraz AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
Domyślnie wersja metadanych 1 jest wyłączona:
.png)
Ekspozycja
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/
Warning
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 skompromitować rolę IAM, której aplikacja używa przy następnym uruchomieniu.
Enumeracja
# 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
Nieautoryzowany dostęp
AWS - Elastic Beanstalk Unauthenticated Enum
Utrzymywanie
AWS - Elastic Beanstalk Persistence
Podniesienie uprawnień
AWS - Elastic Beanstalk Privesc
Po eksploatacji
AWS - Elastic Beanstalk Post Exploitation
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

