mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-01 23:39:52 -08:00
Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains
This commit is contained in:
@@ -24,7 +24,7 @@ aws --region us-east-1 --profile ad docdb describe-db-cluster-snapshot-attribute
|
||||
Оскільки DocumentDB є сумісною з MongoDB базою даних, ви можете уявити, що вона також вразлива до поширених атак NoSQL injection:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
|
||||
{{#endref}}
|
||||
|
||||
### DocumentDB
|
||||
|
||||
@@ -18,9 +18,9 @@ Amazon DynamoDB представлений AWS як **повністю керо
|
||||
|
||||
### Резервні копії та експорт до S3
|
||||
|
||||
Можна **планувати** створення **резервних копій таблиць** або створювати їх за **запитом**. Крім того, також можливо активувати **відновлення на момент часу (PITR) для таблиці.** Відновлення на момент часу забезпечує безперервні **резервні копії** ваших даних DynamoDB протягом **35 днів**, щоб допомогти вам захиститися від випадкових операцій запису або видалення.
|
||||
Можливо **планувати** створення **резервних копій таблиць** або створювати їх **за запитом**. Крім того, також можливо активувати **відновлення на момент часу (PITR) для таблиці.** Відновлення на момент часу забезпечує безперервні **резервні копії** ваших даних DynamoDB протягом **35 днів**, щоб допомогти вам захиститися від випадкових операцій запису або видалення.
|
||||
|
||||
Також можливо експортувати **дані таблиці до S3**, але таблиця повинна мати **активоване PITR**.
|
||||
Також можливо експортувати **дані таблиці до S3**, але таблиця повинна мати **активований PITR**.
|
||||
|
||||
### GUI
|
||||
|
||||
@@ -84,7 +84,7 @@ aws dynamodb describe-endpoints #Dynamodb endpoints
|
||||
Існують способи доступу до даних DynamoDB з використанням **SQL-синтаксису**, тому типові **SQL-ін'єкції також можливі**.
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/sql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
|
||||
{{#endref}}
|
||||
|
||||
### NoSQL-ін'єкція
|
||||
@@ -95,7 +95,7 @@ https://book.hacktricks.xyz/pentesting-web/sql-injection
|
||||
Зверніть увагу, що **різні умови** підтримуються, якщо дані отримуються через **`query`** або через **`scan`**.
|
||||
|
||||
> [!NOTE]
|
||||
> Насправді, дії **Query** повинні вказувати **умову "EQ" (дорівнює)** в **первинному** ключі, щоб працювати, що робить їх набагато **менш вразливими до NoSQL-ін'єкцій** (і також обмежує операцію).
|
||||
> Насправді, **Query** дії повинні вказувати **умову "EQ" (дорівнює)** у **первинному** ключі, щоб працювати, що робить їх набагато **менш вразливими до NoSQL-ін'єкцій** (і також обмежує операцію).
|
||||
|
||||
Якщо ви можете **змінити порівняння**, що виконується, або додати нові, ви могли б отримати більше даних.
|
||||
```bash
|
||||
@@ -105,7 +105,7 @@ https://book.hacktricks.xyz/pentesting-web/sql-injection
|
||||
"GT": " " #All strings are greater than a space
|
||||
```
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
|
||||
{{#endref}}
|
||||
|
||||
### Сира ін'єкція Json
|
||||
@@ -113,19 +113,19 @@ https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
> [!CAUTION]
|
||||
> **Ця вразливість базується на Scan Filter dynamodb, який тепер застарілий!**
|
||||
|
||||
**DynamoDB** приймає **Json** об'єкти для **пошуку** даних у БД. Якщо ви виявите, що можете записувати в json об'єкт, надісланий для пошуку, ви можете зробити дамп БД, всієї її вмісту.
|
||||
**DynamoDB** приймає **Json** об'єкти для **пошуку** даних у БД. Якщо ви виявите, що можете записувати в json об'єкт, надісланий для пошуку, ви зможете зробити дамп БД, всієї її вмісту.
|
||||
|
||||
Наприклад, ін'єкція в запит, як:
|
||||
```bash
|
||||
'{"Id": {"ComparisonOperator": "EQ","AttributeValueList": [{"N": "' + user_input + '"}]}}'
|
||||
```
|
||||
зловмисник міг би ввести щось на зразок:
|
||||
зловмисник міг би ввести щось на кшталт:
|
||||
|
||||
`1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0`
|
||||
|
||||
виправити умову "EQ", шукаючи ID 1000, а потім шукати всі дані з рядком Id, що перевищує 0, що є всіма.
|
||||
виправити умову "EQ", шукаючи ID 1000, а потім шукати всі дані з рядком Id, більшим за 0, що є всіма.
|
||||
|
||||
Ще один **вразливий приклад з використанням входу** може бути:
|
||||
Ще один **вразливий приклад з використанням входу** міг би бути:
|
||||
```python
|
||||
scan_filter = """{
|
||||
"username": {
|
||||
@@ -152,7 +152,7 @@ password: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none
|
||||
```java
|
||||
new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap)
|
||||
```
|
||||
Вам потрібно знати, що пошук у DynamoDB для **заміни** значення **атрибута** в **виразах фільтрації** під час сканування елементів, токени повинні **починатися** з символу **`:`**. Такі токени будуть **замінені** на фактичне **значення атрибута під час виконання**.
|
||||
Вам потрібно знати, що при пошуку в DynamoDB для **заміни** значення **атрибута** в **виразах фільтра** під час сканування елементів, токени повинні **починатися** з символу **`:`**. Такі токени будуть **замінені** на фактичне **значення атрибута під час виконання**.
|
||||
|
||||
Отже, вхід, подібний до попереднього, можна обійти за допомогою чогось на зразок:
|
||||
```bash
|
||||
|
||||
@@ -35,10 +35,10 @@ Amazon EC2 використовується для ініціювання **ві
|
||||
|
||||
### Metadata Endpoint
|
||||
|
||||
AWS EC2 метадані - це інформація про інстанс Amazon Elastic Compute Cloud (EC2), яка доступна інстансу під час виконання. Ці метадані використовуються для надання інформації про інстанс, такої як його ідентифікатор інстансу, зона доступності, в якій він працює, IAM роль, пов'язана з інстансом, та ім'я хоста інстансу.
|
||||
AWS EC2 метадані - це інформація про інстанс Amazon Elastic Compute Cloud (EC2), яка доступна інстансу під час виконання. Ці метадані використовуються для надання інформації про інстанс, такої як його ID інстансу, зона доступності, в якій він працює, IAM роль, пов'язана з інстансом, та ім'я хоста інстансу.
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
### Enumeration
|
||||
@@ -149,13 +149,13 @@ aws ec2 describe-vpc-peering-connections
|
||||
|
||||
## EBS
|
||||
|
||||
Amazon **EBS** (Elastic Block Store) **знімки** - це, по суті, статичні **резервні копії** обсягів AWS EBS. Іншими словами, це **копії** **дисків**, підключених до **EC2** екземпляра в певний момент часу. Знімки EBS можна копіювати між регіонами та обліковими записами або навіть завантажувати та запускати локально.
|
||||
Amazon **EBS** (Elastic Block Store) **знімки** в основному є статичними **резервними копіями** обсягів AWS EBS. Іншими словами, це **копії** **дисків**, підключених до **EC2** екземпляра в певний момент часу. Знімки EBS можуть бути скопійовані між регіонами та обліковими записами або навіть завантажені та запущені локально.
|
||||
|
||||
Знімки можуть містити **чутливу інформацію**, таку як **джерельний код або ключі API**, тому, якщо у вас є можливість, рекомендується перевірити це.
|
||||
Знімки можуть містити **чутливу інформацію**, таку як **джерельний код або ключі API**, тому, якщо у вас є можливість, рекомендується перевірити їх.
|
||||
|
||||
### Різниця AMI та EBS
|
||||
|
||||
**AMI** використовується для **запуску EC2 екземпляра**, тоді як **знімок EC2** використовується для **резервного копіювання та відновлення даних, збережених на обсязі EBS**. Хоча знімок EC2 можна використовувати для створення нового AMI, це не те саме, що AMI, і він не містить інформації про операційну систему, сервер додатків або інше програмне забезпечення, необхідне для запуску програми.
|
||||
**AMI** використовується для **запуску EC2 екземпляра**, тоді як **знімок EC2** використовується для **резервного копіювання та відновлення даних, збережених на обсязі EBS**. Хоча знімок EC2 може бути використаний для створення нового AMI, це не те саме, що AMI, і він не містить інформації про операційну систему, сервер додатків або інше програмне забезпечення, необхідне для запуску програми.
|
||||
|
||||
### Підвищення привілеїв
|
||||
|
||||
@@ -171,7 +171,7 @@ Amazon **EBS** (Elastic Block Store) **знімки** - це, по суті, с
|
||||
|
||||
**SSM Agent** дозволяє Systems Manager оновлювати, керувати та налаштовувати ці ресурси. Агент **обробляє запити від служби Systems Manager в AWS Cloud** і потім виконує їх відповідно до запиту.
|
||||
|
||||
**SSM Agent постачається**[ **попередньо встановленим в деяких AMI**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) або вам потрібно [**встановити їх вручну**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) на екземплярах. Також роль IAM, що використовується всередині екземпляра, повинна мати політику **AmazonEC2RoleforSSM**, щоб мати можливість спілкуватися.
|
||||
**SSM Agent постачається**[ **попередньо встановленим у деяких AMI**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) або вам потрібно [**встановити їх вручну**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) на екземплярах. Також IAM роль, що використовується всередині екземпляра, повинна мати політику **AmazonEC2RoleforSSM**, щоб мати можливість спілкуватися.
|
||||
|
||||
### Перерахування
|
||||
```bash
|
||||
@@ -211,7 +211,7 @@ aws elbv2 describe-listeners --load-balancer-arn <load_balancer_arn>
|
||||
```
|
||||
## Шаблони запуску та групи автоскалювання
|
||||
|
||||
### Перерахунок
|
||||
### Перерахування
|
||||
```bash
|
||||
# Launch templates
|
||||
aws ec2 describe-launch-templates
|
||||
@@ -228,7 +228,7 @@ aws autoscaling describe-load-balancers
|
||||
```
|
||||
## Nitro
|
||||
|
||||
AWS Nitro - це набір **інноваційних технологій**, які формують базову платформу для AWS EC2 інстансів. Введений Amazon для **покращення безпеки, продуктивності та надійності**, Nitro використовує спеціальні **апаратні компоненти та легкий гіпервізор**. Він абстрагує більшість традиційних функцій віртуалізації на спеціалізоване апаратне та програмне забезпечення, **мінімізуючи поверхню атаки** та покращуючи ефективність ресурсів. Відвантажуючи функції віртуалізації, Nitro дозволяє EC2 інстансам забезпечувати **практично продуктивність bare-metal**, що робить його особливо корисним для ресурсомістких додатків. Крім того, Nitro Security Chip спеціально забезпечує **безпеку апаратного забезпечення та прошивки**, ще більше зміцнюючи його надійну архітектуру.
|
||||
AWS Nitro - це набір **інноваційних технологій**, які формують базову платформу для AWS EC2 інстансів. Введений Amazon для **покращення безпеки, продуктивності та надійності**, Nitro використовує спеціальні **апаратні компоненти та легкий гіпервізор**. Він абстрагує більшість традиційних функцій віртуалізації на спеціалізоване апаратне та програмне забезпечення, **мінімізуючи поверхню атаки** та покращуючи ефективність ресурсів. Завдяки перенесенню функцій віртуалізації, Nitro дозволяє EC2 інстансам забезпечувати **практично продуктивність bare-metal**, що робить його особливо корисним для ресурсомістких додатків. Крім того, Nitro Security Chip спеціально забезпечує **безпеку апаратного забезпечення та прошивки**, ще більше зміцнюючи його надійну архітектуру.
|
||||
|
||||
Отримайте більше інформації та дізнайтеся, як його перерахувати з:
|
||||
|
||||
@@ -238,7 +238,7 @@ aws-nitro-enum.md
|
||||
|
||||
## VPN
|
||||
|
||||
VPN дозволяє підключити вашу **локальну мережу (site-to-site VPN)** або **ноутбуки працівників (Client VPN)** до **AWS VPC**, щоб сервіси могли бути доступні без необхідності їх відкриття в інтернеті.
|
||||
VPN дозволяє підключити вашу **локальну мережу (site-to-site VPN)** або **ноутбуки працівників (Client VPN)** до **AWS VPC**, щоб сервіси могли бути доступні без необхідності їх відкриття в Інтернеті.
|
||||
|
||||
#### Основні компоненти AWS VPN
|
||||
|
||||
@@ -255,12 +255,12 @@ VPN дозволяє підключити вашу **локальну мереж
|
||||
3. **Site-to-Site VPN Connection**:
|
||||
- З'єднання Site-to-Site VPN з'єднує вашу локальну мережу з VPC через безпечний IPsec VPN тунель.
|
||||
- Цей тип з'єднання вимагає Customer Gateway та Virtual Private Gateway.
|
||||
- Він використовується для безпечної, стабільної та послідовної комунікації між вашим дата-центром або мережею та вашим AWS середовищем.
|
||||
- Використовується для безпечної, стабільної та послідовної комунікації між вашим дата-центром або мережею та вашим AWS середовищем.
|
||||
- Зазвичай використовується для регулярних, довгострокових з'єднань і оплачується на основі обсягу даних, переданих через з'єднання.
|
||||
4. **Client VPN Endpoint**:
|
||||
- Кінцева точка Client VPN - це ресурс, який ви створюєте в AWS для активації та управління сесіями клієнтського VPN.
|
||||
- Він використовується для дозволу окремим пристроям (таким як ноутбуки, смартфони тощо) безпечно підключатися до ресурсів AWS або вашої локальної мережі.
|
||||
- Він відрізняється від Site-to-Site VPN тим, що призначений для окремих клієнтів, а не для підключення цілих мереж.
|
||||
- Використовується для дозволу окремим пристроям (таким як ноутбуки, смартфони тощо) безпечно підключатися до ресурсів AWS або вашої локальної мережі.
|
||||
- Вона відрізняється від Site-to-Site VPN тим, що призначена для окремих клієнтів, а не для підключення цілих мереж.
|
||||
- З Client VPN кожен клієнтський пристрій використовує програмне забезпечення VPN-клієнта для встановлення безпечного з'єднання.
|
||||
|
||||
Ви можете [**знайти більше інформації про переваги та компоненти AWS VPN тут**](aws-vpc-and-networking-basic-information.md#vpn).
|
||||
@@ -293,13 +293,13 @@ aws ec2 describe-vpn-connections
|
||||
|
||||
**Локальні Тимчасові Облікові Дані**
|
||||
|
||||
Коли використовується AWS VPN Client для підключення до VPN, користувач зазвичай **входить в AWS**, щоб отримати доступ до VPN. Потім деякі **облікові дані AWS створюються та зберігаються** локально для встановлення VPN-з'єднання. Ці облікові дані **зберігаються в** `$HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt` і містять **AccessKey**, **SecretKey** та **Token**.
|
||||
Коли AWS VPN Client використовується для підключення до VPN, користувач зазвичай **входить в AWS**, щоб отримати доступ до VPN. Потім деякі **облікові дані AWS створюються та зберігаються** локально для встановлення VPN-з'єднання. Ці облікові дані **зберігаються в** `$HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt` і містять **AccessKey**, **SecretKey** та **Token**.
|
||||
|
||||
Облікові дані належать користувачу `arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials` (TODO: дослідити більше про дозволи цих облікових даних).
|
||||
|
||||
**файли конфігурації opvn**
|
||||
**opvn конфігураційні файли**
|
||||
|
||||
Якщо **VPN-з'єднання було встановлено**, вам слід шукати **`.opvn`** файли конфігурації в системі. Більше того, одне місце, де ви можете знайти **конфігурації**, це **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**
|
||||
Якщо **VPN-з'єднання було встановлено**, вам слід шукати **`.opvn`** конфігураційні файли в системі. Більше того, одне з місць, де ви можете знайти **конфігурації**, це **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**
|
||||
|
||||
#### **Постексплуатація**
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# AWS - Перерахунок реляційної бази даних (RDS)
|
||||
# AWS - Relational Database (RDS) Enum
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -20,7 +20,7 @@ AWS RDS підтримує різні широко використовуван
|
||||
|
||||
## Облікові дані
|
||||
|
||||
При створенні кластера БД майстерний **ім'я користувача** може бути налаштований (**`admin`** за замовчуванням). Щоб згенерувати пароль цього користувача, ви можете:
|
||||
При створенні кластера DB майстер **ім'я користувача** може бути налаштоване (**`admin`** за замовчуванням). Щоб згенерувати пароль цього користувача, ви можете:
|
||||
|
||||
- **Вказати** **пароль** самостійно
|
||||
- Сказати RDS **автоматично згенерувати** його
|
||||
@@ -30,17 +30,17 @@ AWS RDS підтримує різні широко використовуван
|
||||
|
||||
### Аутентифікація
|
||||
|
||||
Існує 3 типи варіантів аутентифікації, але використання **майстерного пароля завжди дозволено**:
|
||||
Існує 3 типи варіантів аутентифікації, але використання **майстер-пароля завжди дозволено**:
|
||||
|
||||
<figure><img src="../../../images/image (227).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Публічний доступ та VPC
|
||||
|
||||
За замовчуванням **публічний доступ не надається** базам даних, однак він **може бути наданий**. Тому за замовчуванням лише машини з тієї ж VPC зможуть отримати доступ до неї, якщо вибрана **група безпеки** (зберігається в EC2 SG) дозволяє це.
|
||||
За замовчуванням **публічний доступ не надається** базам даних, однак він **може бути наданий**. Тому за замовчуванням лише машини з тієї ж VPC зможуть отримати доступ до неї, якщо вибрана **група безпеки** (зберігається в EC2 SG) це дозволяє.
|
||||
|
||||
Замість того, щоб відкривати екземпляр БД, можна створити **RDS Proxy**, який **покращує** **масштабованість** та **доступність** кластера БД.
|
||||
Замість того, щоб відкривати екземпляр бази даних, можна створити **RDS Proxy**, який **покращує** **масштабованість** та **доступність** кластера бази даних.
|
||||
|
||||
Більше того, **порт бази даних також може бути змінений**.
|
||||
Крім того, **порт бази даних також може бути змінений**.
|
||||
|
||||
### Шифрування
|
||||
|
||||
@@ -53,24 +53,24 @@ AWS RDS підтримує різні широко використовуван
|
||||
|
||||
#### Прозоре шифрування даних (TDE)
|
||||
|
||||
Поряд з можливостями шифрування, властивими RDS на рівні програми, RDS також підтримує **додаткові механізми шифрування на платформі** для захисту даних у спокої. Це включає **Прозоре шифрування даних (TDE)** для Oracle та SQL Server. Однак важливо зазначити, що хоча TDE підвищує безпеку, шифруючи дані в спокої, це також може **вплинути на продуктивність бази даних**. Цей вплив на продуктивність особливо помітний при використанні разом з криптографічними функціями MySQL або криптографічними функціями Microsoft Transact-SQL.
|
||||
Окрім можливостей шифрування, властивих RDS на рівні програми, RDS також підтримує **додаткові механізми шифрування на платформі** для захисту даних у спокої. Це включає **Прозоре шифрування даних (TDE)** для Oracle та SQL Server. Однак важливо зазначити, що хоча TDE підвищує безпеку, шифруючи дані в спокої, це також може **вплинути на продуктивність бази даних**. Цей вплив на продуктивність особливо помітний при використанні разом з криптографічними функціями MySQL або криптографічними функціями Microsoft Transact-SQL.
|
||||
|
||||
Щоб використовувати TDE, необхідні певні попередні кроки:
|
||||
|
||||
1. **Асоціація групи параметрів**:
|
||||
- База даних повинна бути асоційована з групою параметрів. Групи параметрів служать контейнерами для налаштувань і функцій, полегшуючи управління базою даних, включаючи покращення безпеки.
|
||||
- База даних повинна бути асоційована з групою параметрів. Групи параметрів слугують контейнерами для налаштувань і функцій, полегшуючи управління базою даних, включаючи покращення безпеки.
|
||||
- Однак важливо зазначити, що групи параметрів доступні лише для певних движків бази даних і версій.
|
||||
2. **Включення TDE в групу параметрів**:
|
||||
- Після асоціації з групою параметрів опція Oracle Transparent Data Encryption повинна бути включена в цю групу.
|
||||
- Важливо усвідомлювати, що після додавання опції TDE до групи параметрів вона стає постійною частиною і не може бути видалена.
|
||||
- Важливо усвідомлювати, що після додавання опції TDE до групи параметрів вона стає постійною і не може бути видалена.
|
||||
3. **Режими шифрування TDE**:
|
||||
- TDE пропонує два різні режими шифрування:
|
||||
- **Шифрування таблиць TDE**: Цей режим шифрує цілі таблиці, забезпечуючи ширший обсяг захисту даних.
|
||||
- **Шифрування стовпців TDE**: Цей режим зосереджується на шифруванні конкретних, окремих елементів у базі даних, що дозволяє більш детально контролювати, які дані шифруються.
|
||||
|
||||
Розуміння цих попередніх вимог і оперативних тонкощів TDE є важливим для ефективного впровадження та управління шифруванням у RDS, забезпечуючи як безпеку даних, так і відповідність необхідним стандартам.
|
||||
Розуміння цих передумов і оперативних тонкощів TDE є важливим для ефективного впровадження та управління шифруванням у RDS, забезпечуючи як безпеку даних, так і відповідність необхідним стандартам.
|
||||
|
||||
### Перерахунок
|
||||
### Перерахування
|
||||
```bash
|
||||
# Clusters info
|
||||
## Get Endpoints, username, port, iam auth enabled, attached roles, SG
|
||||
@@ -117,7 +117,7 @@ aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password
|
||||
../aws-privilege-escalation/aws-rds-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
### Після експлуатації
|
||||
### Постексплуатація
|
||||
|
||||
{{#ref}}
|
||||
../aws-post-exploitation/aws-rds-post-exploitation.md
|
||||
@@ -134,7 +134,7 @@ aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password
|
||||
Існують способи доступу до даних DynamoDB з використанням **SQL-синтаксису**, отже, типові **SQL-ін'єкції також можливі**.
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/sql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
|
||||
## **CloudTrail**
|
||||
|
||||
AWS CloudTrail **реєструє та моніторить активність у вашому середовищі AWS**. Він захоплює детальні **журнали подій**, включаючи, хто що зробив, коли і звідки, для всіх взаємодій з ресурсами AWS. Це забезпечує аудит змін і дій, допомагаючи в аналізі безпеки, аудиті відповідності та відстеженні змін ресурсів. CloudTrail є важливим для розуміння поведінки користувачів і ресурсів, покращення безпеки та забезпечення відповідності регуляторним вимогам.
|
||||
AWS CloudTrail **реєструє та моніторить активність у вашому середовищі AWS**. Він захоплює детальні **журнали подій**, включаючи, хто що зробив, коли і звідки, для всіх взаємодій з ресурсами AWS. Це забезпечує слід змін і дій, допомагаючи в аналізі безпеки, аудиті відповідності та відстеженні змін ресурсів. CloudTrail є важливим для розуміння поведінки користувачів і ресурсів, покращення безпеки та забезпечення відповідності регуляторним вимогам.
|
||||
|
||||
Кожна зафіксована подія містить:
|
||||
|
||||
- Назву викликаного API: `eventName`
|
||||
- Викликану службу: `eventSource`
|
||||
- Ім'я викликаного API: `eventName`
|
||||
- Викликаний сервіс: `eventSource`
|
||||
- Час: `eventTime`
|
||||
- IP-адресу: `SourceIPAddress`
|
||||
- IP-адреса: `SourceIPAddress`
|
||||
- Метод агента: `userAgent`. Приклади:
|
||||
- Signing.amazonaws.com - З AWS Management Console
|
||||
- console.amazonaws.com - Кореневий користувач облікового запису
|
||||
@@ -22,7 +22,7 @@ AWS CloudTrail **реєструє та моніторить активність
|
||||
Події записуються в новий файл журналу **приблизно кожні 5 хвилин у файлі JSON**, вони зберігаються CloudTrail, а в кінцевому підсумку файли журналів **доставляються в S3 приблизно через 15 хвилин**.\
|
||||
Журнали CloudTrail можуть бути **агреговані між обліковими записами та регіонами.**\
|
||||
CloudTrail дозволяє використовувати **цілісність файлів журналів, щоб мати можливість перевірити, що ваші файли журналів залишилися незмінними** з моменту їх доставки вам. Він створює SHA-256 хеш журналів у файлі дайджесту. SHA-256 хеш нових журналів створюється щогодини.\
|
||||
При створенні Trail селектори подій дозволять вам вказати, які події журналювати: управлінські, дані або інсайти.
|
||||
При створенні Trail селектори подій дозволять вам вказати, які події реєструвати: управлінські, дані або події аналітики.
|
||||
|
||||
Журнали зберігаються в кошику S3. За замовчуванням використовується шифрування на стороні сервера (SSE-S3), тому AWS розшифрує вміст для людей, які мають до нього доступ, але для додаткової безпеки ви можете використовувати SSE з KMS та вашими власними ключами.
|
||||
|
||||
@@ -55,7 +55,7 @@ CloudTrail дозволяє використовувати **цілісніст
|
||||
|
||||
### CloudTrail з усіх облікових записів організації в 1
|
||||
|
||||
При створенні CloudTrail можливо вказати активувати CloudTrail для всіх облікових записів в організації та отримати журнали лише в 1 кошику:
|
||||
При створенні CloudTrail можливо вказати активувати cloudtrail для всіх облікових записів в організації та отримати журнали в лише 1 кошик:
|
||||
|
||||
<figure><img src="../../../../images/image (200).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -83,23 +83,23 @@ aws cloudtrail validate-logs --trail-arn <trailARN> --start-time <start-time> [-
|
||||
|
||||
### Інсайти
|
||||
|
||||
**CloudTrail Insights** автоматично **аналізує** події управління записами з трас CloudTrail і **сповіщає** вас про **незвичайну активність**. Наприклад, якщо є збільшення подій `TerminateInstance`, яке відрізняється від встановлених базових значень, ви побачите це як подію Insight. Ці події роблять **знаходження та реагування на незвичайну API активність легшими** ніж будь-коли.
|
||||
**CloudTrail Insights** автоматично **аналізує** події управління записами з трас CloudTrail і **сповіщає** вас про **незвичайну активність**. Наприклад, якщо спостерігається збільшення подій `TerminateInstance`, що відрізняється від встановлених базових значень, ви побачите це як подію Insight. Ці події роблять **знаходження та реагування на незвичайну API-активність легшими** ніж будь-коли.
|
||||
|
||||
Інсайти зберігаються в тому ж бакеті, що й логи CloudTrail у: `BucketName/AWSLogs/AccountID/CloudTrail-Insight`
|
||||
Інсайти зберігаються в тому ж бакеті, що й логи CloudTrail: `BucketName/AWSLogs/AccountID/CloudTrail-Insight`
|
||||
|
||||
### Безпека
|
||||
|
||||
| Цілісність файлів логів CloudTrail | <ul><li>Перевірити, чи логи були підроблені (змінені або видалені)</li><li><p>Використовує файли дайджесту (створює хеш для кожного файлу)</p><ul><li>SHA-256 хешування</li><li>SHA-256 з RSA для цифрового підпису</li><li>приватний ключ, що належить Amazon</li></ul></li><li>Створення файлу дайджесту займає 1 годину (здійснюється щогодини)</li></ul> |
|
||||
| Цілісність файлів логів CloudTrail | <ul><li>Перевірити, чи не були змінені логи (модифіковані або видалені)</li><li><p>Використовує файли дайджесту (створює хеш для кожного файлу)</p><ul><li>SHA-256 хешування</li><li>SHA-256 з RSA для цифрового підпису</li><li>приватний ключ, що належить Amazon</li></ul></li><li>Створення файлу дайджесту займає 1 годину (виконується щогодини)</li></ul> |
|
||||
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Зупинити несанкціонований доступ | <ul><li><p>Використовуйте політики IAM та політики бакетів S3</p><ul><li>команда безпеки —> адміністраторський доступ</li><li>аудитори —> доступ лише для читання</li></ul></li><li>Використовуйте SSE-S3/SSE-KMS для шифрування логів</li></ul> |
|
||||
| Запобігти видаленню файлів логів | <ul><li>Обмежити доступ до видалення за допомогою IAM та політик бакетів</li><li>Налаштувати видалення S3 MFA</li><li>Перевірити за допомогою валідації файлів логів</li></ul> |
|
||||
| Запобігти видаленню файлів логів | <ul><li>Обмежити доступ до видалення за допомогою IAM та політик бакетів</li><li>Налаштувати S3 MFA видалення</li><li>Перевірити за допомогою валідації файлів логів</li></ul> |
|
||||
|
||||
## Консультант доступу
|
||||
|
||||
AWS Access Advisor покладається на останні 400 днів логів AWS **CloudTrail для збору своїх інсайтів**. CloudTrail фіксує історію викликів API AWS та пов'язаних подій, що відбулися в обліковому записі AWS. Консультант доступу використовує ці дані, щоб **показати, коли сервіси востаннє використовувалися**. Аналізуючи логи CloudTrail, Консультант доступу може визначити, які сервіси AWS використовував IAM користувач або роль і коли цей доступ відбувався. Це допомагає адміністраторам AWS приймати обґрунтовані рішення щодо **удосконалення дозволів**, оскільки вони можуть виявити сервіси, які не використовувалися протягом тривалого часу, і потенційно зменшити надто широкі дозволи на основі реальних патернів використання.
|
||||
AWS Access Advisor спирається на останні 400 днів логів AWS **CloudTrail для збору своїх інсайтів**. CloudTrail фіксує історію викликів API AWS та пов'язаних подій, що відбулися в обліковому записі AWS. Access Advisor використовує ці дані, щоб **показати, коли сервіси востаннє використовувалися**. Аналізуючи логи CloudTrail, Access Advisor може визначити, які сервіси AWS використовував IAM-користувач або роль і коли цей доступ відбувався. Це допомагає адміністраторам AWS приймати обґрунтовані рішення щодо **удосконалення дозволів**, оскільки вони можуть виявити сервіси, які не використовувалися протягом тривалого часу, і потенційно зменшити надто широкі дозволи на основі реальних патернів використання.
|
||||
|
||||
> [!TIP]
|
||||
> Отже, Консультант доступу інформує про **необхідні дозволи, що надаються користувачам**, щоб адміністратор міг їх видалити
|
||||
> Отже, Access Advisor інформує про **необхідні дозволи, що надаються користувачам**, щоб адміністратор міг їх видалити
|
||||
|
||||
<figure><img src="../../../../images/image (78).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -139,7 +139,7 @@ print(response)
|
||||
Для отримання додаткової інформації про CSV-ін'єкції перегляньте сторінку:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/formula-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/formula-csv-doc-latex-ghostscript-injection.html
|
||||
{{#endref}}
|
||||
|
||||
Для отримання додаткової інформації про цю конкретну техніку перегляньте [https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/](https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/)
|
||||
@@ -148,17 +148,17 @@ https://book.hacktricks.xyz/pentesting-web/formula-injection
|
||||
|
||||
### HoneyTokens **обхід**
|
||||
|
||||
Honeytokens створюються для **виявлення ексфільтрації чутливої інформації**. У випадку з AWS, це **ключі AWS, використання яких моніториться**, якщо щось викликає дію з цим ключем, то хтось, напевно, вкрали цей ключ.
|
||||
Honeytokens створюються для **виявлення ексфільтрації чутливої інформації**. У випадку з AWS, це **ключі AWS, використання яких контролюється**, якщо щось викликає дію з цим ключем, то хтось, напевно, вкрали цей ключ.
|
||||
|
||||
Однак, Honeytokens, такі як ті, що створені [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren), або використовують впізнаване ім'я облікового запису, або використовують один і той же ідентифікатор облікового запису AWS для всіх своїх клієнтів. Тому, якщо ви зможете отримати ім'я облікового запису та/або ідентифікатор облікового запису без того, щоб Cloudtrail створив будь-який журнал, **ви зможете дізнатися, чи є ключ honeytoken чи ні**.
|
||||
Однак Honeytokens, такі як ті, що створені [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren), або використовують впізнаване ім'я облікового запису, або використовують один і той же ідентифікатор облікового запису AWS для всіх своїх клієнтів. Тому, якщо ви можете отримати ім'я облікового запису та/або ідентифікатор облікового запису без того, щоб Cloudtrail створював будь-який журнал, **ви могли б дізнатися, чи є ключ honeytoken чи ні**.
|
||||
|
||||
[**Pacu**](https://github.com/RhinoSecurityLabs/pacu/blob/79cd7d58f7bff5693c6ae73b30a8455df6136cca/pacu/modules/iam__detect_honeytokens/main.py#L57) має деякі правила для виявлення, чи належить ключ до [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)**:**
|
||||
|
||||
- Якщо **`canarytokens.org`** з'являється в імені ролі або ідентифікатор облікового запису **`534261010715`** з'являється в повідомленні про помилку.
|
||||
- Тестуючи їх нещодавно, вони використовують обліковий запис **`717712589309`** і все ще мають рядок **`canarytokens.com`** в імені.
|
||||
- Якщо **`SpaceCrab`** з'являється в імені ролі в повідомленні про помилку
|
||||
- **SpaceSiren** використовує **uuids** для генерації імен користувачів: `[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}`
|
||||
- Якщо **ім'я виглядає як випадково згенероване**, є високі ймовірності, що це HoneyToken.
|
||||
- Якщо **`SpaceCrab`** з'являється в імені ролі в повідомленні про помилку.
|
||||
- **SpaceSiren** використовує **uuid** для генерації імен користувачів: `[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}`
|
||||
- Якщо **ім'я виглядає як випадково згенероване**, є висока ймовірність, що це HoneyToken.
|
||||
|
||||
#### Отримати ідентифікатор облікового запису з ідентифікатора ключа
|
||||
|
||||
@@ -189,24 +189,24 @@ print("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56J
|
||||
|
||||
Справа в тому, що вихід покаже вам помилку, що вказує на ідентифікатор облікового запису та ім'я облікового запису, тому **ви зможете побачити, чи це Honeytoken**.
|
||||
|
||||
#### Служби AWS без журналів
|
||||
#### AWS сервіси без журналів
|
||||
|
||||
У минулому існували деякі **служби AWS, які не надсилають журнали до CloudTrail** (знайдіть [список тут](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Деякі з цих служб **відповідатимуть** з **помилкою**, що містить **ARN ключової ролі**, якщо хтось несанкціонований (ключ Honeytoken) намагатиметься отримати до них доступ.
|
||||
У минулому існували деякі **AWS сервіси, які не надсилають журнали до CloudTrail** (знайдіть [список тут](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Деякі з цих сервісів **відповідають** з **помилкою**, що містить **ARN ключової ролі**, якщо хтось несанкціонований (ключ Honeytoken) намагається отримати до них доступ.
|
||||
|
||||
Таким чином, **зловмисник може отримати ARN ключа, не викликавши жодного журналу**. У ARN зловмисник може побачити **ідентифікатор облікового запису AWS та ім'я**, легко дізнатися ідентифікатори облікових записів компаній HoneyToken та їхні імена, тому таким чином зловмисник може визначити, чи є токен HoneyToken.
|
||||
Таким чином, **зловмисник може отримати ARN ключа, не викликаючи жодного журналу**. У ARN зловмисник може побачити **ідентифікатор облікового запису AWS та ім'я**, легко дізнатися ідентифікатори облікових записів компаній HoneyToken, тому таким чином зловмисник може визначити, чи є токен HoneyToken.
|
||||
|
||||
.png>)
|
||||
|
||||
> [!CAUTION]
|
||||
> Зверніть увагу, що всі публічні API, виявлені як такі, що не створюють журнали CloudTrail, тепер виправлені, тому, можливо, вам потрібно знайти свої власні...
|
||||
>
|
||||
> Для отримання додаткової інформації перевірте [**оригінальне дослідження**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/).
|
||||
> Для отримання додаткової інформації перегляньте [**оригінальне дослідження**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/).
|
||||
|
||||
### Доступ до третьої інфраструктури
|
||||
|
||||
Деякі служби AWS **створюють певну інфраструктуру**, таку як **Бази даних** або **кластери Kubernetes** (EKS). Користувач, **який безпосередньо спілкується з цими службами** (наприклад, API Kubernetes), **не використовуватиме API AWS**, тому CloudTrail не зможе побачити цю комунікацію.
|
||||
Деякі сервіси AWS **створюють певну інфраструктуру**, таку як **Бази даних** або **Kubernetes** кластери (EKS). Користувач, **який безпосередньо спілкується з цими сервісами** (наприклад, API Kubernetes), **не використовуватиме API AWS**, тому CloudTrail не зможе побачити цю комунікацію.
|
||||
|
||||
Отже, користувач з доступом до EKS, який виявив URL API EKS, може згенерувати токен локально та **спілкуватися з API-сервісом без виявлення Cloudtrail**.
|
||||
Отже, користувач з доступом до EKS, який виявив URL API EKS, може згенерувати токен локально і **спілкуватися з API-сервісом без виявлення Cloudtrail**.
|
||||
|
||||
Більше інформації в:
|
||||
|
||||
@@ -236,7 +236,7 @@ aws cloudtrail put-event-selectors --trail-name <trail_name> --event-selectors '
|
||||
# Remove all selectors (stop Insights)
|
||||
aws cloudtrail put-event-selectors --trail-name <trail_name> --event-selectors '[]' --region <region>
|
||||
```
|
||||
У першому прикладі надано один селектор подій у вигляді масиву JSON з одним об'єктом. `"ReadWriteType": "ReadOnly"` вказує на те, що **селектор подій повинен захоплювати лише події тільки для читання** (тому CloudTrail insights **не буде перевіряти події запису**, наприклад).
|
||||
У першому прикладі одиничний селектор подій надається у вигляді масиву JSON з єдиним об'єктом. `"ReadWriteType": "ReadOnly"` вказує на те, що **селектор подій повинен захоплювати лише події тільки для читання** (тому CloudTrail insights **не буде перевіряти події запису**, наприклад).
|
||||
|
||||
Ви можете налаштувати селектор подій відповідно до ваших конкретних вимог.
|
||||
|
||||
@@ -249,14 +249,14 @@ aws s3api put-bucket-lifecycle --bucket <bucket_name> --lifecycle-configuration
|
||||
- Видалити S3 бакет
|
||||
- Змінити політику бакету, щоб заборонити будь-які записи з сервісу CloudTrail
|
||||
- Додати політику життєвого циклу до S3 бакету для видалення об'єктів
|
||||
- Вимкнути ключ kms, який використовується для шифрування журналів CloudTrail
|
||||
- Вимкнути ключ kms, що використовується для шифрування журналів CloudTrail
|
||||
|
||||
### Ransomware Cloudtrail
|
||||
|
||||
#### Ransomware S3
|
||||
|
||||
Ви можете **згенерувати асиметричний ключ** і змусити **CloudTrail зашифрувати дані** цим ключем і **видалити приватний ключ**, щоб вміст CloudTrail не можна було відновити.\
|
||||
Це в основному **S3-KMS ransomware**, пояснене в:
|
||||
Це, по суті, **S3-KMS ransomware**, пояснене в:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-post-exploitation/aws-s3-post-exploitation.md
|
||||
@@ -264,7 +264,7 @@ aws s3api put-bucket-lifecycle --bucket <bucket_name> --lifecycle-configuration
|
||||
|
||||
**KMS ransomware**
|
||||
|
||||
Це найпростіший спосіб виконати попередню атаку з різними вимогами до дозволів:
|
||||
Це найпростіший спосіб виконати попередню атаку з іншими вимогами до дозволів:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-post-exploitation/aws-kms-post-exploitation.md
|
||||
|
||||
Reference in New Issue
Block a user