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, управляється Autoscaling групами в EC2 (з балансувальником навантаження). Це означає, що в кінці дня, якщо ви компрометуєте хост, вам слід знати про EC2:
Більше того, якщо використовується Docker, можливо використовувати ECS.
У AWS Elastic Beanstalk концепції "додатка" та "середовища" виконують різні функції та мають різні ролі в процесі розгортання.
Додаток в Elastic Beanstalk є логічним контейнером для вихідного коду вашого додатка, середовищ та конфігурацій. Він об'єднує різні версії коду вашого додатка та дозволяє вам управляти ними як єдиним цілим.
Коли ви створюєте додаток, ви надаєте ім'я та опис, але на цьому етапі ресурси не забезпечуються. Це просто спосіб організувати та управляти вашим кодом та супутніми ресурсами.
Ви можете мати кілька версій додатка в межах одного додатка. Кожна версія відповідає конкретному випуску вашого коду, який може бути розгорнутий в одному або кількох середовищах.
Середовище є забезпеченою інстанцією вашого додатка, що працює на інфраструктурі AWS. Це місце, де ваш код додатка розгортається та виконується. Elastic Beanstalk забезпечує необхідні ресурси (наприклад, EC2 інстанції, балансувальники навантаження, групи автоматичного масштабування, бази даних) на основі конфігурації середовища.
Кожне середовище виконує одну версію вашого додатка, і ви можете мати кілька середовищ для різних цілей, таких як розробка, тестування, стадіювання та виробництво.
Коли ви створюєте середовище, ви вибираєте платформу (наприклад, Java, .NET, Node.js тощо) та тип середовища (наприклад, веб-сервер або робітник). Ви також можете налаштувати конфігурацію середовища, щоб контролювати різні аспекти інфраструктури та налаштувань додатка.
Середовище веб-сервера: Воно призначене для хостингу та обслуговування веб-додатків та API. Ці додатки зазвичай обробляють вхідні HTTP/HTTPS запити. Середовище веб-сервера забезпечує ресурси, такі як EC2 інстанції, балансувальники навантаження та групи автоматичного масштабування, щоб обробляти вхідний трафік, управляти потужністю та забезпечувати високу доступність додатка.
Середовище робітника: Воно призначене для обробки фонових завдань, які часто є трудомісткими або ресурсомісткими операціями, що не вимагають негайних відповідей клієнтів. Середовище робітника забезпечує ресурси, такі як 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 роль, яку використовує додаток наступного разу, коли він буде виконаний.
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)