AWS - Elastic Beanstalk Enum
Elastic Beanstalk
Amazon Elastic Beanstalk надає спрощену платформу для розгортання, управління та масштабування веб-додатків та сервісів. Він підтримує різноманітні мови програмування та фреймворки, такі як Java, .NET, PHP, Node.js, Python, Ruby та Go, а також Docker контейнери. Сервіс сумісний з широко використовуваними серверами, включаючи Apache, Nginx, Passenger та IIS.
Elastic Beanstalk надає простий та гнучкий спосіб розгортання ваших додатків у хмарі AWS, без необхідності турбуватися про підлеглу інфраструктуру. Він автоматично обробляє деталі забезпечення потужностей, балансування навантаження, масштабування та моніторингу здоров'я додатків, дозволяючи вам зосередитися на написанні та розгортанні вашого коду.
Інфраструктура, створена Elastic Beanstalk, управляється Autoscaling групами в EC2 (з балансувальником навантаження). Це означає, що в кінцевому підсумку, якщо ви компрометуєте хост, вам слід знати про EC2:
AWS - EC2, EBS, ELB, SSM, VPC & VPN EnumКрім того, якщо використовується Docker, можливо використовувати ECS.
AWS - EKS EnumApplication & Environments
В AWS Elastic Beanstalk, концепції "додаток" та "середовище" мають різні цілі та ролі в процесі розгортання.
Application
Додаток в Elastic Beanstalk є логічним контейнером для вихідного коду вашого додатка, середовищ та конфігурацій. Він групує різні версії вашого коду та дозволяє керувати ними як єдиним об'єктом.
Коли ви створюєте додаток, ви надаєте ім'я та опис, але ресурси на цьому етапі не виділяються. Це просто спосіб організувати та керувати вашим кодом та пов'язаними ресурсами.
Ви можете мати декілька версій додатка в межах одного додатка. Кожна версія відповідає конкретному випуску вашого коду, який може бути розгорнутий в одному або декількох середовищах.
Environment
Середовище є виділеним екземпляром вашого додатка, що працює на інфраструктурі AWS. Це місце, де ваш код розгортається та виконується. Elastic Beanstalk виділяє необхідні ресурси (наприклад, EC2 інстанси, балансувальники навантаження, авто-масштабуючі групи, бази даних) на основі конфігурації середовища.
Кожне середовище виконує одну версію вашого додатка, і ви можете мати декілька середовищ для різних цілей, таких як розробка, тестування, стадіювання та продуктивність.
Коли ви створюєте середовище, ви обираєте платформу (наприклад, Java, .NET, Node.js тощо) та тип середовища (наприклад, веб-сервер або робітник). Ви також можете налаштувати конфігурацію середовища для контролю різних аспектів інфраструктури та налаштувань додатка.
2 типи середовищ
Web Server Environment: Призначене для хостингу та обслуговування веб-додатків та API. Ці додатки зазвичай обробляють вхідні HTTP/HTTPS запити. Середовище веб-сервера виділяє ресурси, такі як EC2 інстанси, балансувальники навантаження та авто-масштабуючі групи для обробки вхідного трафіку, управління потужностями та забезпечення високої доступності додатка.
Worker Environment: Призначене для обробки фонових завдань, які часто є тривалими або ресурсомісткими операціями, що не потребують негайної відповіді клієнтам. Середовище робітника виділяє ресурси, такі як EC2 інстанси та авто-масштабуючі групи, але не має балансувальника навантаження, оскільки не обробляє HTTP/HTTPS запити безпосередньо. Натомість, воно споживає завдання з Amazon Simple Queue Service (SQS) черги, яка діє як буфер між середовищем робітника та завданнями, які воно обробляє.
Security
При створенні додатка в Beanstalk є 3 дуже важливі параметри безпеки, які потрібно вибрати:
EC2 key pair: Це буде SSH ключ, який зможе отримати доступ до EC2 інстансів, що виконують додаток
IAM 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
За замовчуванням версія метаданих 1 вимкнена:
Exposure
Дані Beanstalk зберігаються в S3 bucket з наступною назвою: elasticbeanstalk-<region>-<acc-id>
(якщо він був створений у консолі AWS). Всередині цього bucket ви знайдете завантажений вихідний код додатка.
URL створеної веб-сторінки є http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
Якщо ви отримаєте доступ на читання до bucket, ви можете читати вихідний код і навіть знайти чутливі облікові дані в ньому
Якщо ви отримаєте доступ на запис до bucket, ви можете змінити вихідний код, щоб компрометувати IAM роль, яку використовує додаток наступного разу, коли він буде виконаний.
Enumeration
Неавтентифікований доступ
AWS - Elastic Beanstalk Unauthenticated EnumЗбереження доступу
AWS - Elastic Beanstalk PersistenceПідвищення привілеїв
AWS - Elastic Beanstalk PrivescПостексплуатація
AWS - Elastic Beanstalk Post ExploitationLast updated