Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:49:00 +00:00
parent 210c27fffb
commit 5630d68e4e
226 changed files with 2238 additions and 2256 deletions

View File

@@ -4,36 +4,36 @@
## API Gateway
### Basic Information
### Основна інформація
AWS API Gateway - це комплексна служба, що пропонується Amazon Web Services (AWS), призначена для розробників, щоб **створювати, публікувати та контролювати API в масштабах**. Вона функціонує як точка входу до програми, дозволяючи розробникам встановлювати набір правил і процедур. Ця структура регулює доступ зовнішніх користувачів до певних даних або функціональностей у програмі.
AWS API Gateway - це всебічна служба, що пропонується Amazon Web Services (AWS), призначена для розробників, щоб **створювати, публікувати та контролювати API в масштабах**. Вона функціонує як точка входу до програми, дозволяючи розробникам встановлювати набір правил і процедур. Ця структура регулює доступ зовнішніх користувачів до певних даних або функціональностей у програмі.
API Gateway дозволяє вам визначити, **як повинні оброблятися запити до ваших API**, і може створювати користувацькі кінцеві точки API з конкретними методами (наприклад, GET, POST, PUT, DELETE) та ресурсами. Вона також може генерувати клієнтські SDK (набори засобів розробки програмного забезпечення), щоб спростити розробникам виклик ваших API з їхніх програм.
API Gateway дозволяє вам визначити, **як повинні оброблятися запити до ваших API**, і може створювати користувацькі кінцеві точки API з конкретними методами (наприклад, GET, POST, PUT, DELETE) та ресурсами. Вона також може генерувати клієнтські SDK (набори засобів розробки програмного забезпечення), щоб спростити розробникам виклики ваших API з їхніх програм.
### API Gateways Types
### Типи API Gateway
- **HTTP API**: Створюйте API REST з низькою затримкою та економічними витратами з вбудованими функціями, такими як OIDC та OAuth2, а також нативною підтримкою CORS. Працює з наступними: Lambda, HTTP backends.
- **WebSocket API**: Створюйте WebSocket API, використовуючи постійні з'єднання для реальних випадків використання, таких як чат-додатки або інформаційні панелі. Працює з наступними: Lambda, HTTP, AWS Services.
- **REST API**: Розробляйте REST API, де ви отримуєте повний контроль над запитом і відповіддю разом із можливостями управління API. Працює з наступними: Lambda, HTTP, AWS Services.
- **REST API Private**: Створіть REST API, який доступний лише зсередини VPC.
### API Gateway Main Components
### Основні компоненти API Gateway
1. **Resources**: У API Gateway ресурси - це компоненти, які **складають структуру вашого API**. Вони представляють **різні шляхи або кінцеві точки** вашого API і відповідають різним діям, які підтримує ваш API. Ресурс - це кожен метод (наприклад, GET, POST, PUT, DELETE) **всередині кожного шляху** (/, або /users, або /user/{id}).
2. **Stages**: Стадії в API Gateway представляють **різні версії або середовища** вашого API, такі як розробка, тестування або продуктивність. Ви можете використовувати стадії для управління та розгортання **декількох версій вашого API одночасно**, що дозволяє вам тестувати нові функції або виправлення помилок без впливу на продуктивне середовище. Стадії також **підтримують змінні стадії**, які є парами ключ-значення, що можуть використовуватися для налаштування поведінки вашого API в залежності від поточної стадії. Наприклад, ви можете використовувати змінні стадії, щоб направляти запити API до різних функцій Lambda або інших служб бекенду в залежності від стадії.
1. **Ресурси**: У API Gateway ресурси - це компоненти, які **складають структуру вашого API**. Вони представляють **різні шляхи або кінцеві точки** вашого API і відповідають різним діям, які підтримує ваш API. Ресурс - це кожен метод (наприклад, GET, POST, PUT, DELETE) **всередині кожного шляху** (/, або /users, або /user/{id}).
2. **Стадії**: Стадії в API Gateway представляють **різні версії або середовища** вашого API, такі як розробка, тестування або продуктивність. Ви можете використовувати стадії для управління та розгортання **декількох версій вашого API одночасно**, що дозволяє вам тестувати нові функції або виправлення помилок без впливу на продуктивне середовище. Стадії також **підтримують змінні стадії**, які є парами ключ-значення, що можуть використовуватися для налаштування поведінки вашого API залежно від поточної стадії. Наприклад, ви можете використовувати змінні стадії, щоб направляти запити API до різних функцій Lambda або інших служб бекенду в залежності від стадії.
- Стадія вказується на початку URL кінцевої точки API Gateway.
3. **Authorizers**: Авторизатори в API Gateway відповідають за **контроль доступу до вашого API**, перевіряючи особу виклику перед тим, як дозволити запит. Ви можете використовувати **функції AWS Lambda** як користувацькі авторизатори, що дозволяє вам реалізувати власну логіку аутентифікації та авторизації. Коли надходить запит, API Gateway передає токен авторизації запиту авторизатору Lambda, який обробляє токен і повертає політику IAM, що визначає, які дії дозволено виконувати виклику. API Gateway також підтримує **вбудовані авторизатори**, такі як **AWS Identity and Access Management (IAM)** та **Amazon Cognito**.
4. **Resource Policy**: Політика ресурсу в API Gateway - це документ JSON, який **визначає дозволи для доступу до вашого API**. Вона подібна до політики IAM, але спеціально адаптована для API Gateway. Ви можете використовувати політику ресурсу, щоб контролювати, хто може отримати доступ до вашого API, які методи вони можуть викликати та з яких IP-адрес або VPC вони можуть підключатися. **Політики ресурсів можуть використовуватися в поєднанні з авторизаторами** для надання детального контролю доступу до вашого API.
3. **Авторизатори**: Авторизатори в API Gateway відповідають за **контроль доступу до вашого API**, перевіряючи особу виклику перед тим, як дозволити запиту продовжити. Ви можете використовувати **функції AWS Lambda** як користувацькі авторизатори, що дозволяє вам реалізувати власну логіку аутентифікації та авторизації. Коли запит надходить, API Gateway передає токен авторизації запиту авторизатору Lambda, який обробляє токен і повертає політику IAM, що визначає, які дії може виконувати викликач. API Gateway також підтримує **вбудовані авторизатори**, такі як **AWS Identity and Access Management (IAM)** та **Amazon Cognito**.
4. **Політика ресурсу**: Політика ресурсу в API Gateway - це документ JSON, який **визначає дозволи для доступу до вашого API**. Вона подібна до політики IAM, але спеціально адаптована для API Gateway. Ви можете використовувати політику ресурсу, щоб контролювати, хто може отримати доступ до вашого API, які методи вони можуть викликати і з яких IP-адрес або VPC вони можуть підключатися. **Політики ресурсів можуть використовуватися в поєднанні з авторизаторами** для надання детального контролю доступу до вашого API.
- Щоб зміни набрали чинності, API потрібно **знову розгорнути після** зміни політики ресурсу.
### Logging
### Логування
За замовчуванням **CloudWatch Logs** **вимкнено**, **Access Logging** **вимкнено**, а **X-Ray tracing** також **вимкнено**.
За замовчуванням **CloudWatch Logs** вимкнено, **Access Logging** вимкнено, а **X-Ray tracing** також вимкнено.
### Enumeration
### Перерахування
> [!TIP]
> Зверніть увагу, що в обох API AWS для перерахунку ресурсів (**`apigateway`** та **`apigatewayv2`**) єдине дозволення, яке вам потрібно, і єдине дозволення на читання, яке можна надати, - це **`apigateway:GET`**, з цим ви можете **перерахувати все.**
> Зверніть увагу, що в обох AWS API для перерахування ресурсів (**`apigateway`** та **`apigatewayv2`**) єдиний дозвіл, який вам потрібен, і єдиний дозвіл на читання, який можна надати, - це **`apigateway:GET`**, з цим ви можете **перерахувати все.**
{{#tabs }}
{{#tab name="apigateway" }}
@@ -141,7 +141,7 @@ https://<api-id>.execute-api.<region>.amazonaws.com/<stage>/<resource>
Коли це встановлено, ви отримаєте помилку `{"message":"Missing Authentication Token"}`, коли спробуєте досягти кінцевої точки без будь-якої авторизації.
Один простий спосіб згенерувати очікуваний токен додатком - це використати **curl**.
Один із простих способів згенерувати очікуваний токен додатком - це використати **curl**.
```bash
$ curl -X <method> https://<api-id>.execute-api.<region>.amazonaws.com/<stage>/<resource> --user <AWS_ACCESS_KEY>:<AWS_SECRET_KEY> --aws-sigv4 "aws:amz:<region>:execute-api"
```
@@ -157,7 +157,7 @@ AWS4-HMAC-SHA256 Credential=AKIAYY7XU6ECUDOTWB7W/20220726/us-east-1/execute-api/
```
Зверніть увагу, що в інших випадках **Authorizer** міг бути **погано закодований**, і просто відправка **будь-чого** в **Authorization header** дозволить **побачити прихований контент**.
### Request Signing Using Python
### Підписування запитів за допомогою Python
```python
pip install requests
@@ -184,14 +184,14 @@ response = requests.get(url, auth=awsauth)
print(response.text)
```
### Custom Lambda Authorizer
### Кастомний авторизатор Lambda
Можливо використовувати лямбду, яка на основі даного токена **поверне IAM політику**, що вказує, чи користувач **уповноважений викликати API кінцеву точку**.\
Можливо використовувати lambda, яка на основі даного токена **поверне IAM політику**, що вказує, чи користувач **уповноважений викликати API-ендпоінт**.\
Ви можете налаштувати кожен метод ресурсу, який буде використовувати авторизатор.
<details>
<summary>Lambda Authorizer Code Example</summary>
<summary>Приклад коду авторизатора Lambda</summary>
```python
import json
@@ -236,7 +236,7 @@ return policy
```
</details>
Call it with something like:
Викличте це з чимось на кшталт:
<pre class="language-bash" data-overflow="wrap"><code class="lang-bash"><strong>curl "https://jhhqafgh6f.execute-api.eu-west-1.amazonaws.com/prod/custom_auth" -H 'Authorization: your-secret-token'
</strong></code></pre>
@@ -244,19 +244,19 @@ Call it with something like:
> [!WARNING]
> Залежно від коду Lambda, ця авторизація може бути вразливою
Зверніть увагу, що якщо **генерується і повертається політика заборони**, помилка, повернена API Gateway, виглядає так: `{"Message":"User is not authorized to access this resource with an explicit deny"}`
Зверніть увагу, що якщо **генерується і повертається політика відмови**, помилка, повернена API Gateway, виглядає так: `{"Message":"User is not authorized to access this resource with an explicit deny"}`
Таким чином, ви могли б **виявити цю авторизацію**.
### Необхідний API ключ
Можна налаштувати API кінцеві точки, які **вимагають дійсний API ключ** для зв'язку з ними.
Можливо налаштувати API кінцеві точки, які **вимагають дійсний API ключ** для зв'язку з ними.
<figure><img src="../../../images/image (88).png" alt=""><figcaption></figcaption></figure>
Можна генерувати API ключі в порталі API Gateway і навіть налаштувати, скільки разів їх можна використовувати (в термінах запитів на секунду та в термінах запитів на місяць).
Можливо генерувати API ключі в порталі API Gateway і навіть налаштувати, скільки разів їх можна використовувати (в термінах запитів на секунду та в термінах запитів на місяць).
Щоб API ключ працював, потрібно додати його до **Плану використання**, цей план використання повинен бути доданий до **Стадії API**, а асоційована стадія API повинна мати налаштоване **обмеження методів** для **кінцевої точки**, що вимагає API ключа:
Щоб API ключ працював, вам потрібно додати його до **Плану використання**, цей план використання повинен бути доданий до **API Стадії**, а асоційована API стадія повинна мати налаштоване **обмеження методів** для **кінцевої точки**, що вимагає API ключа:
<figure><img src="../../../images/image (198).png" alt=""><figcaption></figcaption></figure>