AWS - Elastic Beanstalk Enum

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки 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 (з балансувальником навантаження). Це означає, що в кінці дня, якщо ви компрометували хост, вам слід знати про EC2:

pageAWS - EC2, EBS, ELB, SSM, VPC & VPN Enum

Крім того, якщо використовується Docker, можна використовувати ECS.

pageAWS - EKS Enum

Додаток та Середовища

У AWS Elastic Beanstalk концепції "додаток" та "середовище" виконують різні функції та мають відмінні ролі в процесі розгортання.

Додаток

  • Додаток в Elastic Beanstalk - це логічний контейнер для вихідного коду вашого додатка, середовищ та конфігурацій. Він групує різні версії коду вашого додатка та дозволяє вам керувати ними як одиничною сутністю.

  • При створенні додатка ви вказуєте назву та опис, але на цьому етапі не виділяються ресурси. Це просто спосіб організувати та керувати вашим кодом та пов'язаними ресурсами.

  • У додатку можна мати кілька версій додатків. Кожна версія відповідає конкретному випуску вашого коду, який можна розгорнути в одне або кілька середовищ.

Середовище

  • Середовище - це виділений екземпляр вашого додатка, який працює на інфраструктурі AWS. Це місце, де розгортовується та виконується код вашого додатка. Elastic Beanstalk виділяє необхідні ресурси (наприклад, екземпляри EC2, балансувальники навантаження, групи автоматичного масштабування, бази даних) на основі конфігурації середовища.

  • Кожне середовище запускає одну версію вашого додатка, і ви можете мати кілька середовищ для різних цілей, таких як розробка, тестування, стейджинг та продакшн.

  • При створенні середовища ви вибираєте платформу (наприклад, Java, .NET, Node.js тощо) та тип середовища (наприклад, веб-сервер або робочий). Ви також можете налаштувати конфігурацію середовища для контролю різних аспектів інфраструктури та налаштувань додатка.

2 типи Середовищ

  1. Середовище веб-сервера: Воно призначене для розміщення та обслуговування веб-додатків та API. Ці додатки зазвичай обробляють вхідні запити HTTP/HTTPS. Середовище веб-сервера виділяє ресурси, такі як екземпляри EC2, балансувальники навантаження та групи автоматичного масштабування для обробки вхідного трафіку, управління потужністю та забезпечення високої доступності додатка.

  2. Середовище робочого процесу: Воно призначене для обробки фонових завдань, які часто є часомісткими або ресурсомісткими операціями, які не потребують негайної відповіді клієнтам. Середовище робочого процесу виділяє ресурси, такі як екземпляри EC2 та групи автоматичного масштабування, але не має балансувальника навантаження, оскільки воно не обробляє запити HTTP/HTTPS безпосередньо. Замість цього воно споживає завдання з черги Amazon Simple Queue Service (SQS), яка діє як буфер між середовищем робочого процесу та завданнями, які воно обробляє.

Безпека

При створенні додатка в Beanstalk є 3 дуже важливі параметри безпеки для вибору:

  • Пара ключів EC2: Це буде ключ SSH, за допомогою якого можна отримати доступ до екземплярів EC2, на яких працює додаток

  • Профіль екземпляра IAM: Це профіль екземпляра, який матимуть екземпляри (привілеї IAM)

  • Автоматично згенерований роль називається aws-elasticbeanstalk-ec2-role та має деякий цікавий доступ до всіх ECS, всіх SQS, DynamoDB elasticbeanstalk та elasticbeanstalk S3 за допомогою керованих політик AWS: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.

  • Роль сервісу: Це роль, яку використовуватиме сервіс AWS для виконання всіх необхідних дій. На скільки я знаю, звичайний користувач AWS не може отримати доступ до цієї ролі.

  • Ця роль, згенерована AWS, називається aws-elasticbeanstalk-service-role та використовує керовані політики AWS AWSElasticBeanstalkEnhancedHealth та AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy

За замовчуванням вимкнено метадані версії 1:

### Викриття

Дані Beanstalk зберігаються в S3-ведрі з наступною назвою: elasticbeanstalk-<region>-<acc-id> (якщо воно було створено в консолі AWS). У цьому відра ви знайдете завантажений вихідний код додатка.

URL створеної веб-сторінки: http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/

Якщо у вас є доступ на читання до відра, ви можете читати вихідний код та навіть знайти чутливі облікові дані на ньому.

Якщо у вас є доступ на запис до відра, ви можете змінювати вихідний код, щоб порушити IAM-роль, яку використовує додаток, коли він буде виконаний наступного разу.

Перелік

# 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

Неаутентифікований доступ

pageAWS - Elastic Beanstalk Unauthenticated Enum

Наполегливість

pageAWS - Elastic Beanstalk Persistence

Підвищення привілеїв

pageAWS - Elastic Beanstalk Privesc

Післяексплуатаційна діяльність

pageAWS - Elastic Beanstalk Post Exploitation
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated