From a6329a337b58b968673ef7a4dda5afe89b555f23 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 12 Feb 2025 13:50:45 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/azure-security/az-services/az-automati --- .../az-services/az-automation-accounts.md | 26 +++++++++---------- .../az-services/az-container-instances.md | 6 ++--- .../az-services/az-container-registry.md | 18 ++++++------- theme/ht_searcher.js | 4 +-- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-services/az-automation-accounts.md b/src/pentesting-cloud/azure-security/az-services/az-automation-accounts.md index eab85fc6c..fa41c9a67 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-automation-accounts.md +++ b/src/pentesting-cloud/azure-security/az-services/az-automation-accounts.md @@ -1,10 +1,10 @@ # Az - Automation Accounts -{{#include ../../../../banners/hacktricks-training.md}} +{{#include ../../../banners/hacktricks-training.md}} ## Informazioni di base -Gli Azure Automation Accounts sono servizi basati sul cloud in Microsoft Azure che aiutano a **automatizzare i compiti** come la gestione delle risorse, la configurazione e gli aggiornamenti attraverso Azure e ambienti on-premises. Forniscono **Runbooks** (script per l'automazione che vengono eseguiti), **programmazioni** e **gruppi di lavoratori ibridi** per eseguire **lavori di automazione**, abilitando l'infrastruttura come codice (IaC) e l'automazione dei processi per migliorare l'efficienza e la coerenza nella gestione delle risorse cloud. +Gli Azure Automation Accounts sono servizi basati sul cloud in Microsoft Azure che aiutano a **automatizzare i compiti** come la gestione delle risorse, la configurazione e gli aggiornamenti in ambienti Azure e on-premises. Forniscono **Runbooks** (script per l'automazione che vengono eseguiti), **programmazioni** e **gruppi di lavoratori ibridi** per eseguire **lavori** di automazione, abilitando l'infrastruttura come codice (IaC) e l'automazione dei processi per migliorare l'efficienza e la coerenza nella gestione delle risorse cloud. ### Impostazioni @@ -32,8 +32,8 @@ Un lavoro contiene l'**output** dell'**esecuzione del Runbook**. Se puoi **legge Ci sono 3 modi principali per eseguire un Runbook: -- **Programmazioni**: Queste vengono utilizzate per **attivare** i Runbooks a un **orario specifico** o **intervallo**. -- **Webhook**: Questi sono **endpoint HTTP** che possono essere utilizzati per **attivare** i Runbooks da **servizi esterni**. Nota che l'URL del webhook è **non visibile** dopo la creazione. +- **Programmazioni**: Queste vengono utilizzate per **attivare** i Runbooks a un **orario specifico** o a **intervalli**. +- **Webhook**: Questi sono **endpoint HTTP** che possono essere utilizzati per **attivare** i Runbooks da **servizi esterni**. Nota che l'URL del webhook **non è visibile** dopo la creazione. - **Attivazione manuale**: Puoi **attivare manualmente** un Runbook dal Portale Azure e dalla CLI. ### Controllo del codice sorgente @@ -44,7 +44,7 @@ Quando la sincronizzazione è abilitata, nel **repository Github viene creato un Nota che questi webhook **non saranno visibili** quando si elencano i webhook nei runbooks associati al repository Github. Inoltre, nota che **non è possibile cambiare l'URL del repository** di un controllo del codice sorgente una volta creato. -Affinché il controllo del codice sorgente configurato funzioni, l'**Azure Automation Account** deve avere un'identità gestita (sistema o utente) con il ruolo di **`Contributor`**. Inoltre, per assegnare un'identità gestita utente all'Automation Account, è necessario indicare l'ID client dell'utente MI nella variabile **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**. +Affinché il controllo del codice sorgente configurato funzioni, l'**Azure Automation Account** deve avere un'identità gestita (di sistema o utente) con il ruolo di **`Contributor`**. Inoltre, per assegnare un'identità gestita a un'Automation Account, è necessario indicare l'ID client dell'utente MI nella variabile **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**. ### Ambienti di esecuzione @@ -57,16 +57,16 @@ Quando si crea un Runbook è possibile selezionare l'ambiente di esecuzione. Per - **Python 3.8** - **Python 2.7** -Tuttavia, è anche possibile **creare i propri ambienti**, utilizzando uno di questi come base. Nel caso di Python, è possibile caricare pacchetti `.whl` nell'ambiente che verranno utilizzati. Nel caso di PowerShell, è possibile caricare pacchetti `.zip` con i moduli da avere nell'esecuzione. +Tuttavia, è anche possibile **creare i propri ambienti**, utilizzando uno di questi come base. Nel caso di Python, è possibile caricare pacchetti `.whl` nell'ambiente che verrà utilizzato. Nel caso di PowerShell, è possibile caricare pacchetti `.zip` con i moduli da avere nell'esecuzione. ### Gruppi di lavoratori ibridi -In Azure Automation, l'ambiente di esecuzione predefinito per i runbooks è il **Azure Sandbox**, una piattaforma basata sul cloud gestita da Azure, adatta per compiti che coinvolgono risorse Azure. Tuttavia, questo sandbox ha limitazioni, come l'accesso ristretto alle risorse on-premises e vincoli sul tempo di esecuzione e sull'uso delle risorse. Per superare queste limitazioni, vengono impiegati i Gruppi di Lavoratori Ibridi. Un Gruppo di Lavoratori Ibridi è composto da **uno o più Hybrid Runbook Workers installati sulle proprie macchine**, sia on-premises, in altri ambienti cloud o VM Azure. Questa configurazione consente ai runbooks di eseguire direttamente su queste macchine, fornendo accesso diretto alle risorse locali, la possibilità di eseguire compiti più lunghi e intensivi in termini di risorse, e la flessibilità di interagire con ambienti al di là della portata immediata di Azure. +In Azure Automation, l'ambiente di esecuzione predefinito per i runbook è il **Azure Sandbox**, una piattaforma basata sul cloud gestita da Azure, adatta per compiti che coinvolgono risorse Azure. Tuttavia, questo sandbox ha limitazioni, come l'accesso ristretto alle risorse on-premises e vincoli sul tempo di esecuzione e sull'uso delle risorse. Per superare queste limitazioni, vengono impiegati i Gruppi di Lavoratori Ibridi. Un Gruppo di Lavoratori Ibridi è composto da **uno o più Hybrid Runbook Workers installati sulle proprie macchine**, sia on-premises, in altri ambienti cloud o VM Azure. Questa configurazione consente ai runbook di essere eseguiti direttamente su queste macchine, fornendo accesso diretto alle risorse locali, la possibilità di eseguire compiti più lunghi e intensivi in termini di risorse, e la flessibilità di interagire con ambienti al di là della portata immediata di Azure. Quando viene creato un gruppo di lavoratori ibridi, è necessario indicare le **credenziali** da utilizzare. Ci sono 2 opzioni: -- **Credenziali predefinite**: Non è necessario fornire le credenziali e i runbooks verranno eseguiti all'interno delle VM come **Sistema**. -- **Credenziali specifiche**: È necessario fornire il nome dell'oggetto credenziali all'interno dell'account di automazione, che verrà utilizzato per eseguire i **runbooks all'interno delle VM**. Pertanto, in questo caso, potrebbe essere possibile **rubare credenziali valide** per le VM. +- **Credenziali predefinite**: Non è necessario fornire le credenziali e i runbook verranno eseguiti all'interno delle VM come **Sistema**. +- **Credenziali specifiche**: È necessario fornire il nome dell'oggetto credenziali all'interno dell'account di automazione, che verrà utilizzato per eseguire i **runbook all'interno delle VM**. Pertanto, in questo caso, potrebbe essere possibile **rubare credenziali valide** per le VM. Pertanto, se puoi scegliere di eseguire un **Runbook** in un **Lavoratore Ibrido**, eseguirai **comandi arbitrari** all'interno di una macchina esterna come **Sistema** (ottima tecnica di pivot). @@ -77,10 +77,10 @@ Inoltre, se il lavoratore ibrido è in esecuzione in Azure con altre identità g ### Configurazione dello stato (SC) ->[!WARNING] -> Come indicato in [documentazione](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), Azure Automation State Configuration sarà ritirato il 30 settembre 2027 e sostituito da [Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview). +> [!WARNING] +> Come indicato nella [documentazione](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), la Configurazione dello Stato di Azure Automation sarà ritirata il 30 settembre 2027 e sostituita da [Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview). -Gli Automation Accounts supportano anche la **Configurazione dello Stato (SC)**, che è una funzionalità che aiuta a **configurare** e **mantenere** lo **stato** delle tue VM. È possibile **creare** e **applicare** configurazioni DSC a **macchine Windows** e **Linux**. +Gli Automation Accounts supportano anche la **Configurazione dello Stato (SC)**, che è una funzionalità che aiuta a **configurare** e **mantenere** lo **stato** delle tue VM. È possibile **creare** e **applicare** configurazioni DSC a macchine **Windows** e **Linux**. Dal punto di vista di un attaccante, questo era interessante perché consentiva di **eseguire codice PS arbitrario in tutte le VM configurate**, consentendo di elevare i privilegi alle identità gestite di queste VM, potenzialmente pivotando verso nuove reti... Inoltre, le configurazioni potrebbero contenere **informazioni sensibili**. @@ -238,4 +238,4 @@ Get-AzAutomationHybridWorkerGroup -AutomationAccountName -R - [https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview) - [https://github.com/rootsecdev/Azure-Red-Team#runbook-automation](https://github.com/rootsecdev/Azure-Red-Team#runbook-automation) -{{#include ../../../../banners/hacktricks-training.md}} +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-container-instances.md b/src/pentesting-cloud/azure-security/az-services/az-container-instances.md index c88bd8d01..56764121e 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-container-instances.md +++ b/src/pentesting-cloud/azure-security/az-services/az-container-instances.md @@ -1,10 +1,10 @@ # Az - Container Instances -{{#include ../../../../banners/hacktricks-training.md}} +{{#include ../../../banners/hacktricks-training.md}} ## Informazioni di base -Azure Container Instances (ACI) forniscono un **modo serverless e on-demand** per eseguire **container** nel cloud di Azure. Puoi **distribuire** uno o più container in un gruppo con **compute scalabile**, **opzioni di rete** e la flessibilità di connetterti ad **altri servizi Azure** (come Storage, Virtual Networks o Container Registries). +Azure Container Instances (ACI) forniscono un **modo serverless e on-demand** per eseguire **container** nel cloud Azure. Puoi **distribuire** uno o più container in un gruppo con **compute scalabile**, **opzioni di rete** e la flessibilità di connetterti ad **altri servizi Azure** (come Storage, Virtual Networks o Container Registries). Poiché sono carichi di lavoro **effimeri**, non è necessario gestire l'infrastruttura VM sottostante: Azure si occupa di questo per te. Tuttavia, da una **prospettiva di sicurezza offensiva**, è fondamentale comprendere come **permessi**, **identità**, **configurazioni di rete** e **log** possano rivelare superfici di attacco e potenziali misconfigurazioni. @@ -25,7 +25,7 @@ Poiché sono carichi di lavoro **effimeri**, non è necessario gestire l'infrast ## Enumerazione > [!WARNING] -> Quando si enumera ACI, è possibile rivelare configurazioni sensibili come **variabili di ambiente**, **dettagli di rete** o **identità gestite**. Fai attenzione a registrarle o visualizzarle. +> Quando si enumerano ACI, è possibile rivelare configurazioni sensibili come **variabili di ambiente**, **dettagli di rete** o **identità gestite**. Fai attenzione a registrarle o visualizzarle. ```bash # List all container instances in the subscription az container list diff --git a/src/pentesting-cloud/azure-security/az-services/az-container-registry.md b/src/pentesting-cloud/azure-security/az-services/az-container-registry.md index ace6adeac..7822d04e5 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-container-registry.md +++ b/src/pentesting-cloud/azure-security/az-services/az-container-registry.md @@ -1,10 +1,10 @@ # Az - Container Registry -{{#include ../../../../banners/hacktricks-training.md}} +{{#include ../../../banners/hacktricks-training.md}} ## Informazioni di base -Azure Container Registry (ACR) è un registro privato e sicuro che consente di **memorizzare, gestire e accedere alle immagini dei container nel cloud Azure**. Si integra perfettamente con diversi servizi Azure, fornendo flussi di lavoro automatizzati per la creazione e il deployment su larga scala. Con funzionalità come la geo-replica e la scansione delle vulnerabilità, ACR aiuta a garantire sicurezza e conformità di livello enterprise per le applicazioni containerizzate. +Azure Container Registry (ACR) è un registro privato e sicuro che ti consente di **memorizzare, gestire e accedere alle immagini dei container nel cloud Azure**. Si integra perfettamente con diversi servizi Azure, fornendo flussi di lavoro automatizzati per la creazione e il deployment su larga scala. Con funzionalità come la geo-replica e la scansione delle vulnerabilità, ACR aiuta a garantire sicurezza e conformità di livello enterprise per le applicazioni containerizzate. ### Permessi @@ -20,7 +20,7 @@ Questi sono i **diversi permessi** [secondo la documentazione](https://learn.mic Ci sono anche alcuni **ruoli predefiniti** che possono essere assegnati, ed è anche possibile creare **ruoli personalizzati**. -![]() +![](/images/registry_roles.png) ### Autenticazione @@ -31,7 +31,7 @@ Ci sono 4 modi per autenticarsi a un ACR: - **Con Entra ID**: Questo è il **metodo predefinito** per autenticarsi a un ACR. Utilizza il comando **`az acr login`** per autenticarsi all'ACR. Questo comando **memorizzerà le credenziali** nel file **`~/.docker/config.json`**. Inoltre, se stai eseguendo questo comando da un ambiente senza accesso a un socket docker come in una **cloud shell**, è possibile utilizzare il flag **`--expose-token`** per ottenere il **token** per autenticarsi all'ACR. Poi, per autenticarti, devi usare come nome utente `00000000-0000-0000-0000-000000000000` come: `docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN` - **Con un account admin**: L'utente admin è disabilitato per impostazione predefinita, ma può essere abilitato e poi sarà possibile accedere al registro con il **nome utente** e la **password** dell'account admin con pieni permessi sul registro. Questo è ancora supportato perché alcuni servizi Azure lo utilizzano. Nota che **2 password** vengono create per questo utente e entrambe sono valide. Puoi abilitarlo con `az acr update -n --admin-enabled true`. Nota che il nome utente è solitamente il nome del registro (e non `admin`). -- **Con un token**: È possibile creare un **token** con una **specifica `scope map`** (permessi) per accedere al registro. Poi, è possibile utilizzare questo nome di token come nome utente e alcune delle password generate per autenticarsi al registro con `docker login -u -p aregistry-url>` +- **Con un token**: È possibile creare un **token** con una **mappa di scope specifica** (permessi) per accedere al registro. Poi, è possibile utilizzare questo nome di token come nome utente e alcune delle password generate per autenticarsi al registro con `docker login -u -p aregistry-url>` - **Con un Service Principal**: È possibile creare un **service principal** e assegnare un ruolo come **`AcrPull`** per scaricare immagini. Poi, sarà possibile **accedere al registro** utilizzando l'appId SP come nome utente e un segreto generato come password. Esempio di script dalla [documentazione](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal) per generare un SP con accesso su un registro: @@ -63,17 +63,17 @@ Questo ti consente di **scansionare le immagini** nel registro per **vulnerabili ### Soft-delete -La funzione di **soft-delete** ti consente di **recuperare un registro eliminato** entro il numero di giorni indicato. Questa funzione è **disabilitata per impostazione predefinita**. +La funzione di **soft-delete** consente di **recuperare un registro eliminato** entro il numero di giorni indicato. Questa funzione è **disabilitata per impostazione predefinita**. ### Webhook -È possibile **creare webhook** all'interno dei registri. In questo webhook è necessario specificare l'URL dove una **richiesta sarà inviata ogni volta che viene eseguita un'azione di push o delete**. Inoltre, i Webhook possono indicare un ambito per indicare i repository (immagini) che saranno interessati. Ad esempio, 'foo:*' significa eventi sotto il repository 'foo'. +È possibile **creare webhook** all'interno dei registri. In questo webhook è necessario specificare l'URL dove una **richiesta sarà inviata ogni volta che viene eseguita un'azione di push o delete**. Inoltre, i Webhook possono indicare un ambito per indicare i repository (immagini) che saranno interessati. Ad esempio, 'foo:\*' significa eventi sotto il repository 'foo'. Dal punto di vista di un attaccante, è interessante controllare questo **prima di eseguire qualsiasi azione** nel registro e rimuoverlo temporaneamente se necessario, per evitare di essere rilevati. ### Registri connessi -Questo consente fondamentalmente di **rispecchiare le immagini** da un registro a un altro, solitamente situato in locale. +Questo consente fondamentalmente di **rispecchiare le immagini** da un registro a un altro, solitamente situato on-premises. Ha 2 modalità: **ReadOnly** e **ReadWrite**. Nella prima, le immagini vengono solo **scaricate** dal registro sorgente, e nella seconda, le immagini possono anche essere **caricate** nel registro sorgente. @@ -94,7 +94,7 @@ az acr run --registry mycontainerregistry008 --cmd '$Registry/sample/hello-world ``` Tuttavia, ciò attiverà esecuzioni che non sono molto interessanti dal punto di vista di un attaccante poiché non hanno alcuna identità gestita ad esse associata. -Tuttavia, **tasks** possono avere un'**identità gestita di sistema e utente** ad esse associata. Questi tasks sono quelli utili per **escalare privilegi** nel container. Nella sezione di escalation dei privilegi è possibile vedere come utilizzare i tasks per escalare privilegi. +Tuttavia, **tasks** possono avere un'**identità gestita di sistema e utente** ad esse associata. Queste attività sono quelle utili per **escalare privilegi** nel contenitore. Nella sezione sull'escalation dei privilegi è possibile vedere come utilizzare le attività per escalare privilegi. ### Cache @@ -154,4 +154,4 @@ az acr cache show --name --registry - [https://learn.microsoft.com/en-us/azure/container-registry/container-registry-authentication?tabs=azure-cli](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-authentication?tabs=azure-cli) - [https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager) -{{#include ../../../../banners/hacktricks-training.md}} +{{#include ../../../banners/hacktricks-training.md}} diff --git a/theme/ht_searcher.js b/theme/ht_searcher.js index 1cee01a8c..276bbfe6a 100644 --- a/theme/ht_searcher.js +++ b/theme/ht_searcher.js @@ -471,12 +471,12 @@ window.search = window.search || {}; showResults(true); } - fetch(path_to_root + 'searchindex.json') + fetch('https://raw.githubusercontent.com/HackTricks-wiki/hacktricks-cloud/refs/heads/master/searchindex.json') .then(response => response.json()) .then(json => init(json)) .catch(error => { // Try to load searchindex.js if fetch failed var script = document.createElement('script'); - script.src = path_to_root + 'searchindex.js'; + script.src = 'https://raw.githubusercontent.com/HackTricks-wiki/hacktricks-cloud/refs/heads/master/searchindex.js'; script.onload = () => init(window.search); document.head.appendChild(script); });