Translated ['src/README.md', 'src/banners/hacktricks-training.md', 'src/

This commit is contained in:
Translator
2024-12-31 20:42:16 +00:00
parent 4ecda9fe96
commit 92eaf7ce11
245 changed files with 9813 additions and 12533 deletions

View File

@@ -4,70 +4,69 @@
## Elastic Beanstalk
Amazon Elastic Beanstalk provides a simplified platform for **deploying, managing, and scaling web applications and services**. It supports a variety of programming languages and frameworks, such as Java, .NET, PHP, Node.js, Python, Ruby, and Go, as well as Docker containers. The service is compatible with widely-used servers including Apache, Nginx, Passenger, and IIS.
Amazon Elastic Beanstalk надає спрощену платформу для **розгортання, управління та масштабування веб-додатків і сервісів**. Він підтримує різноманітні мови програмування та фреймворки, такі як Java, .NET, PHP, Node.js, Python, Ruby та Go, а також контейнери Docker. Сервіс сумісний з широко використовуваними серверами, включаючи Apache, Nginx, Passenger та IIS.
Elastic Beanstalk provides a simple and flexible way to **deploy your applications to the AWS cloud**, without the need to worry about the underlying infrastructure. It **automatically** handles the details of capacity **provisioning**, load **balancing**, **scaling**, and application health **monitoring**, allowing you to focus on writing and deploying your code.
Elastic Beanstalk надає простий і гнучкий спосіб **розгортання ваших додатків у хмарі AWS**, без необхідності турбуватися про підлягаючу інфраструктуру. Він **автоматично** обробляє деталі **постачання** потужностей, **балансування навантаження**, **масштабування** та **моніторингу** стану додатка, дозволяючи вам зосередитися на написанні та розгортанні вашого коду.
The infrastructure created by Elastic Beanstalk is managed by **Autoscaling** Groups in **EC2** (with a load balancer). Which means that at the end of the day, if you **compromise the host**, you should know about about EC2:
Інфраструктура, створена Elastic Beanstalk, управляється **групами автоматичного масштабування** в **EC2** (з балансувальником навантаження). Це означає, що в кінці дня, якщо ви **компрометуєте хост**, вам слід знати про EC2:
{{#ref}}
aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
{{#endref}}
Moreover, if Docker is used, its possible to use **ECS**.
Більше того, якщо використовується Docker, можливо використовувати **ECS**.
{{#ref}}
aws-eks-enum.md
{{#endref}}
### Application & Environments
### Додаток і середовища
In AWS Elastic Beanstalk, the concepts of an "application" and an "environment" serve different purposes and have distinct roles in the deployment process.
У AWS Elastic Beanstalk поняття "додаток" і "середовище" виконують різні функції та мають різні ролі в процесі розгортання.
#### Application
#### Додаток
- An application in Elastic Beanstalk is a **logical container for your application's source code, environments, and configurations**. It groups together different versions of your application code and allows you to manage them as a single entity.
- When you create an application, you provide a name and **description, but no resources are provisioned** at this stage. it is simply a way to organize and manage your code and related resources.
- You can have **multiple application versions** within an application. Each version corresponds to a specific release of your code, which can be deployed to one or more environments.
- Додаток в Elastic Beanstalk є **логічним контейнером для вихідного коду вашого додатка, середовищ і конфігурацій**. Він об'єднує різні версії вашого коду додатка та дозволяє вам управляти ними як єдиним цілим.
- Коли ви створюєте додаток, ви надаєте ім'я та **опис, але на цьому етапі ресурси не постачаються**. Це просто спосіб організувати та управляти вашим кодом і пов'язаними ресурсами.
- Ви можете мати **кілька версій додатка** в межах одного додатка. Кожна версія відповідає конкретному випуску вашого коду, який може бути розгорнутий в одному або кількох середовищах.
#### Environment
#### Середовище
- An environment is a **provisioned instance of your application** running on AWS infrastructure. It is **where your application code is deployed and executed**. Elastic Beanstalk provisions the necessary resources (e.g., EC2 instances, load balancers, auto-scaling groups, databases) based on the environment configuration.
- **Each environment runs a single version of your application**, and you can have multiple environments for different purposes, such as development, testing, staging, and production.
- When you create an environment, you choose a platform (e.g., Java, .NET, Node.js, etc.) and an environment type (e.g., web server or worker). You can also customize the environment configuration to control various aspects of the infrastructure and application settings.
- Середовище є **постаченою інстанцією вашого додатка**, що працює на інфраструктурі AWS. Це **місце, де ваш код додатка розгортається та виконується**. Elastic Beanstalk постачає необхідні ресурси (наприклад, інстанції EC2, балансувальники навантаження, групи автоматичного масштабування, бази даних) на основі конфігурації середовища.
- **Кожне середовище виконує одну версію вашого додатка**, і ви можете мати кілька середовищ для різних цілей, таких як розробка, тестування, стадіювання та виробництво.
- Коли ви створюєте середовище, ви вибираєте платформу (наприклад, Java, .NET, Node.js тощо) та тип середовища (наприклад, веб-сервер або робітник). Ви також можете налаштувати конфігурацію середовища, щоб контролювати різні аспекти інфраструктури та налаштувань додатка.
### 2 types of Environments
### 2 типи середовищ
1. **Web Server Environment**: It is designed to **host and serve web applications and APIs**. These applications typically handle incoming HTTP/HTTPS requests. The web server environment provisions resources such as **EC2 instances, load balancers, and auto-scaling** groups to handle incoming traffic, manage capacity, and ensure the application's high availability.
2. **Worker Environment**: It is designed to process **background tasks**, which are often time-consuming or resource-intensive operations that don't require immediate responses to clients. The worker environment provisions resources like **EC2 instances and auto-scaling groups**, but it **doesn't have a load balancer** since it doesn't handle HTTP/HTTPS requests directly. Instead, it consumes tasks from an **Amazon Simple Queue Service (SQS) queue**, which acts as a buffer between the worker environment and the tasks it processes.
1. **Середовище веб-сервера**: Воно призначене для **хостингу та обслуговування веб-додатків і API**. Ці додатки зазвичай обробляють вхідні HTTP/HTTPS запити. Середовище веб-сервера постачає ресурси, такі як **інстанції EC2, балансувальники навантаження та групи автоматичного масштабування**, щоб обробляти вхідний трафік, управляти потужностями та забезпечувати високу доступність додатка.
2. **Середовище робітника**: Воно призначене для обробки **фонових завдань**, які часто є трудомісткими або ресурсомісткими операціями, що не вимагають негайних відповідей клієнтам. Середовище робітника постачає ресурси, такі як **інстанції EC2 та групи автоматичного масштабування**, але **не має балансувальника навантаження**, оскільки не обробляє HTTP/HTTPS запити безпосередньо. Натомість воно споживає завдання з **черги Amazon Simple Queue Service (SQS)**, яка діє як буфер між середовищем робітника та завданнями, які воно обробляє.
### Security
### Безпека
When creating an App in Beanstalk there are 3 very important security options to choose:
При створенні додатка в Beanstalk є 3 дуже важливі параметри безпеки для вибору:
- **EC2 key pair**: This will be the **SSH key** that will be able to access the EC2 instances running the app
- **IAM instance profile**: This is the **instance profile** that the instances will have (**IAM privileges**)
- The autogenerated role is called **`aws-elasticbeanstalk-ec2-role`** and has some interesting access over all ECS, all SQS, DynamoDB elasticbeanstalk and elasticbeanstalk S3 using the AWS managed policies: [AWSElasticBeanstalkWebTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier), [AWSElasticBeanstalkMulticontainerDocker](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker), [AWSElasticBeanstalkWorkerTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier).
- **Service role**: This is the **role that the AWS service** will use to perform all the needed actions. Afaik, a regular AWS user cannot access that role.
- This role generated by AWS is called **`aws-elasticbeanstalk-service-role`** and uses the AWS managed policies [AWSElasticBeanstalkEnhancedHealth](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkEnhancedHealth) and [AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy](https://us-east-1.console.aws.amazon.com/iamv2/home?region=us-east-1#/roles/details/aws-elasticbeanstalk-service-role?section=permissions)
- **EC2 ключова пара**: Це буде **SSH ключ**, який зможе отримати доступ до інстанцій EC2, що виконують додаток.
- **IAM профіль інстанції**: Це **профіль інстанції**, який матимуть інстанції (**привілеї IAM**).
- Автоматично згенерована роль називається **`aws-elasticbeanstalk-ec2-role`** і має деякі цікаві доступи до всіх ECS, всіх SQS, DynamoDB elasticbeanstalk та elasticbeanstalk S3, використовуючи керовані політики AWS: [AWSElasticBeanstalkWebTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier), [AWSElasticBeanstalkMulticontainerDocker](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker), [AWSElasticBeanstalkWorkerTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier).
- **Роль служби**: Це **роль, яку використовуватиме служба AWS** для виконання всіх необхідних дій. Наскільки мені відомо, звичайний користувач AWS не може отримати доступ до цієї ролі.
- Ця роль, згенерована AWS, називається **`aws-elasticbeanstalk-service-role`** і використовує керовані політики AWS [AWSElasticBeanstalkEnhancedHealth](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkEnhancedHealth) та [AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy](https://us-east-1.console.aws.amazon.com/iamv2/home?region=us-east-1#/roles/details/aws-elasticbeanstalk-service-role?section=permissions)
By default **metadata version 1 is disabled**:
За замовчуванням **версія метаданих 1 вимкнена**:
<figure><img src="../../../images/image (103).png" alt=""><figcaption></figcaption></figure>
### Exposure
### Вразливість
Beanstalk data is stored in a **S3 bucket** with the following name: **`elasticbeanstalk-<region>-<acc-id>`**(if it was created in the AWS console). Inside this bucket you will find the uploaded **source code of the application**.
Дані Beanstalk зберігаються в **S3 бакеті** з наступною назвою: **`elasticbeanstalk-<region>-<acc-id>`** (якщо він був створений у консолі AWS). Всередині цього бакету ви знайдете завантажений **вихідний код додатка**.
The **URL** of the created webpage is **`http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/`**
**URL** створеної веб-сторінки є **`http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/`**
> [!WARNING]
> If you get **read access** over the bucket, you can **read the source code** and even find **sensitive credentials** on it
> Якщо ви отримаєте **доступ на читання** до бакету, ви зможете **читати вихідний код** і навіть знайти **чутливі облікові дані** в ньому.
>
> if you get **write access** over the bucket, you could **modify the source code** to **compromise** the **IAM role** the application is using next time it's executed.
### Enumeration
> Якщо ви отримаєте **доступ на запис** до бакету, ви зможете **модифікувати вихідний код**, щоб **компрометувати** **IAM роль**, яку використовує додаток наступного разу, коли він буде виконаний.
### Перерахування
```bash
# Find S3 bucket
ACCOUNT_NUMBER=<account_number>
@@ -85,33 +84,28 @@ aws elasticbeanstalk describe-instances-health --environment-name <env_name> # G
# Get events
aws elasticbeanstalk describe-events
```
### Unauthenticated Access
### Неавтентифікований доступ
{{#ref}}
../aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md
{{#endref}}
### Persistence
### Персистентність
{{#ref}}
../aws-persistence/aws-elastic-beanstalk-persistence.md
{{#endref}}
### Privesc
### Підвищення привілеїв
{{#ref}}
../aws-privilege-escalation/aws-elastic-beanstalk-privesc.md
{{#endref}}
### Post Exploitation
### Після експлуатації
{{#ref}}
../aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}