From fb1d786be59673600ebf7cb5a1b0b068767322f7 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 6 Jan 2025 23:56:24 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/ --- src/SUMMARY.md | 2 ++ .../aws-privilege-escalation/aws-s3-privesc.md | 12 ++++-------- .../az-app-services-privesc.md | 6 +++--- .../azure-security/az-services/az-function-apps.md | 14 +++++++------- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index f14f299ff..442c03b1c 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -418,6 +418,7 @@ - [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue-enum.md) - [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus-enum.md) - [Az - SQL](pentesting-cloud/azure-security/az-services/az-sql.md) + - [Az - Static Web Applications](pentesting-cloud/azure-security/az-services/az-static-web-apps.md) - [Az - Storage Accounts & Blobs](pentesting-cloud/azure-security/az-services/az-storage.md) - [Az - Table Storage](pentesting-cloud/azure-security/az-services/az-table-storage.md) - [Az - Virtual Machines & Network](pentesting-cloud/azure-security/az-services/vms/README.md) @@ -461,6 +462,7 @@ - [Az - Queue Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md) - [Az - Service Bus Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md) - [Az - Virtual Machines & Network Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md) + - [Az - Static Web App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md) - [Az - Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md) - [Az - SQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md) - [Az - Persistence](pentesting-cloud/azure-security/az-persistence/README.md) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md index a7721fdbe..5c6b291c2 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md @@ -52,19 +52,15 @@ Ecco alcuni esempi: ### `s3:PutObject`, `s3:GetObject` (opzionale) su file di stato terraform -È molto comune che i file di stato [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) vengano salvati nello storage blob dei fornitori di cloud, ad esempio AWS S3. Il suffisso del file per un file di stato è `.tfstate`, e i nomi dei bucket spesso rivelano che contengono file di stato terraform. Di solito, ogni account AWS ha un bucket di questo tipo per memorizzare i file di stato che mostrano lo stato dell'account. Inoltre, di solito, negli account del mondo reale quasi sempre tutti gli sviluppatori hanno `s3:*` e a volte anche gli utenti aziendali hanno `s3:Put*`. +È molto comune che i file di stato [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) vengano salvati nello storage blob dei fornitori di cloud, ad esempio AWS S3. Il suffisso del file per un file di stato è `.tfstate`, e i nomi dei bucket spesso rivelano che contengono file di stato terraform. Di solito, ogni account AWS ha un bucket di questo tipo per memorizzare i file di stato che mostrano lo stato dell'account.\ +Inoltre, di solito, negli account del mondo reale quasi sempre tutti gli sviluppatori hanno `s3:*` e a volte anche gli utenti aziendali hanno `s3:Put*`. -Quindi, se hai le autorizzazioni elencate su questi file, c'è un vettore di attacco che ti consente di ottenere RCE nella pipeline con i privilegi di `terraform` - per la maggior parte delle volte `AdministratorAccess`, rendendoti l'amministratore dell'account cloud. Inoltre, puoi utilizzare quel vettore per effettuare un attacco di denial of service facendo sì che `terraform` elimini risorse legittime. +Quindi, se hai le autorizzazioni elencate su questi file, c'è un vettore di attacco che ti consente di ottenere RCE nella pipeline con i privilegi di `terraform` - la maggior parte delle volte `AdministratorAccess`, rendendoti l'amministratore dell'account cloud. Inoltre, puoi utilizzare quel vettore per effettuare un attacco di denial of service facendo sì che `terraform` elimini risorse legittime. Segui la descrizione nella sezione *Abusing Terraform State Files* della pagina *Terraform Security* per codice di exploit direttamente utilizzabile: {{#ref}} -pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files -{{#endref}} - -### `s3:PutBucketPolicy` - -Un attaccante, che deve essere **dallo stesso account**, altrimenti si attiverà l'errore `The specified method is not allowed`, con questo permesso sarà in grado di concedersi più autorizzazioni sui bucket, permettendogli di leggere, scrivere, modificare, eliminare ed esporre i bucket. +pentesting-ci-cd/terraform-security.md#ab ```bash # Update Bucket policy aws s3api put-bucket-policy --policy file:///root/policy.json --bucket diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md index e5138471f..0c4a24593 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md @@ -124,7 +124,7 @@ az webapp deployment user set \ --user-name hacktricks \ --password 'W34kP@ssw0rd123!' ``` -Poi, puoi utilizzare queste credenziali per **accedere alle piattaforme SCM e FTP**. Questo è anche un ottimo modo per mantenere la persistenza. +Poi, puoi usare queste credenziali per **accedere alle piattaforme SCM e FTP**. Questo è anche un ottimo modo per mantenere la persistenza. Ricorda che per accedere alla piattaforma SCM dal **web devi accedere a `/BasicAuth`**. @@ -218,7 +218,7 @@ az webapp config appsettings list --name --resource-group ``` ### Leggi le credenziali di terze parti configurate -Eseguendo il seguente comando è possibile **leggere le credenziali di terze parti** configurate nell'account attuale. Nota che, se ad esempio alcune credenziali di Github sono configurate in un utente diverso, non sarai in grado di accedere al token da un altro. +Eseguendo il seguente comando è possibile **leggere le credenziali di terze parti** configurate nell'account attuale. Nota che, ad esempio, se alcune credenziali di Github sono configurate in un utente diverso, non sarai in grado di accedere al token da un altro. ```bash az rest --method GET \ --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01" @@ -266,7 +266,7 @@ https://graph.microsoft.com/v1.0/me/drive/root/children > Nota che avere il permesso `Microsoft.Web/sites/config/list/action` e le credenziali SCM rende sempre possibile distribuire in un webapp (anche se era configurato per utilizzare un fornitore di terze parti) come menzionato in una sezione precedente. > [!WARNING] -> Nota che avere i permessi sottostanti rende anche **possibile eseguire un container arbitrario** anche se il webapp era configurato diversamente. +> Nota che avere i permessi qui sotto rende anche **possibile eseguire un container arbitrario** anche se il webapp era configurato diversamente. ### `Microsoft.Web/sites/config/Write`, `Microsoft.Web/sites/config/Read`, `Microsoft.Web/sites/config/list/Action`, `Microsoft.Web/sites/Read` diff --git a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md index 5102349ef..bc5c8621a 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md +++ b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md @@ -7,7 +7,7 @@ **Azure Function Apps** sono un **servizio di calcolo serverless** che consente di eseguire piccoli pezzi di codice, chiamati **funzioni**, senza gestire l'infrastruttura sottostante. Sono progettate per eseguire codice in risposta a vari trigger, come **richieste HTTP, timer o eventi da altri servizi Azure** come Blob Storage o Event Hubs. Le Function Apps supportano più linguaggi di programmazione, tra cui C#, Python, JavaScript e Java, rendendole versatili per costruire **applicazioni basate su eventi**, automatizzare flussi di lavoro o integrare servizi. Sono economiche, poiché di solito si paga solo per il tempo di calcolo utilizzato quando il codice viene eseguito. > [!NOTE] -> Nota che **le Funzioni sono un sottoinsieme dei Servizi App**, pertanto, molte delle funzionalità discusse qui saranno utilizzate anche dalle applicazioni create come Azure Apps (`webapp` in cli). +> Nota che **le Funzioni sono un sottoinsieme dei Servizi App**, pertanto molte delle funzionalità discusse qui saranno utilizzate anche dalle applicazioni create come Azure Apps (`webapp` in cli). ### Piani Diversi @@ -36,7 +36,7 @@ Nota che le Funzioni consentono anche di memorizzare il codice in una posizione Utilizzando un trigger HTTP: -- È possibile dare **accesso a una funzione da tutto Internet** senza richiedere alcuna autenticazione o dare accesso basato su IAM. Anche se è possibile limitare questo accesso. +- È possibile dare **accesso a una funzione da tutto Internet** senza richiedere alcuna autenticazione o dare accesso basato su IAM. Sebbene sia anche possibile limitare questo accesso. - È anche possibile **dare o limitare l'accesso** a una Function App da **una rete interna (VPC)**. > [!CAUTION] @@ -58,7 +58,7 @@ In una **funzione Windows** che utilizza NodeJS il codice si trovava in **`C:\ho Proprio come [**VM**](vms/index.html), le Funzioni possono avere **Identità Gestite** di 2 tipi: Assegnate dal sistema e Assegnate dall'utente. -L'**identità assegnata dal sistema** sarà un'identità gestita che **solo la funzione** che l'ha assegnata potrà utilizzare, mentre le **identità gestite assegnate dall'utente** sono identità gestite che **qualsiasi altro servizio Azure potrà utilizzare**. +L'**identità assegnata dal sistema** sarà un'identità gestita che **solo la funzione** a cui è assegnata potrà utilizzare, mentre le identità gestite **assegnate dall'utente** sono identità gestite che **qualsiasi altro servizio Azure potrà utilizzare**. > [!NOTE] > Proprio come in [**VM**](vms/index.html), le Funzioni possono avere **1 identità gestita assegnata dal sistema** e **diverse identità assegnate dall'utente**, quindi è sempre importante cercare di trovare tutte se si compromette la funzione perché si potrebbe essere in grado di aumentare i privilegi a diverse identità gestite da una sola Funzione. @@ -69,14 +69,14 @@ L'**identità assegnata dal sistema** sarà un'identità gestita che **solo la f {% embed url="https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm" %} -Nota che devi trovare un modo per **controllare tutte le Identità Gestite a cui una funzione è collegata** poiché se non lo indichi, l'endpoint dei metadati utilizzerà **solo quella predefinita** (controlla il link precedente per ulteriori informazioni). +Nota che è necessario trovare un modo per **controllare tutte le Identità Gestite a cui una funzione è collegata** poiché se non lo indichi, l'endpoint dei metadati utilizzerà **solo quella predefinita** (controlla il link precedente per ulteriori informazioni). ## Chiavi di Accesso > [!NOTE] > Nota che non ci sono permessi RBAC per dare accesso agli utenti per invocare le funzioni. L'**invocazione della funzione dipende dal trigger** selezionato quando è stata creata e se è stato selezionato un Trigger HTTP, potrebbe essere necessario utilizzare una **chiave di accesso**. -Quando si crea un endpoint all'interno di una funzione utilizzando un **trigger HTTP** è possibile indicare il **livello di autorizzazione della chiave di accesso** necessario per attivare la funzione. Sono disponibili tre opzioni: +Quando si crea un endpoint all'interno di una funzione utilizzando un **trigger HTTP**, è possibile indicare il **livello di autorizzazione della chiave di accesso** necessario per attivare la funzione. Sono disponibili tre opzioni: - **ANONYMOUS**: **Tutti** possono accedere alla funzione tramite l'URL. - **FUNCTION**: L'endpoint è accessibile solo agli utenti che utilizzano una **chiave di funzione, host o master**. @@ -84,7 +84,7 @@ Quando si crea un endpoint all'interno di una funzione utilizzando un **trigger **Tipo di chiavi:** -- **Chiavi di Funzione:** Le chiavi di funzione possono essere predefinite o definite dall'utente e sono progettate per concedere accesso esclusivamente a **specifici endpoint di funzione** all'interno di una Function App consentendo un accesso più dettagliato sugli endpoint. +- **Chiavi di Funzione:** Le chiavi di funzione possono essere predefinite o definite dall'utente e sono progettate per concedere accesso esclusivamente a **endpoint di funzione specifici** all'interno di una Function App consentendo un accesso più dettagliato sugli endpoint. - **Chiavi Host:** Le chiavi host, che possono essere anch'esse predefinite o definite dall'utente, forniscono accesso a **tutti gli endpoint di funzione all'interno di una Function App con livello di accesso FUNCTION**. - **Chiave Master:** La chiave master (`_master`) funge da chiave amministrativa che offre permessi elevati, incluso l'accesso a tutti gli endpoint di funzione (incluso il livello di accesso ADMIN). Questa **chiave non può essere revocata.** - **Chiavi di Sistema:** Le chiavi di sistema sono **gestite da estensioni specifiche** e sono necessarie per accedere agli endpoint webhook utilizzati dai componenti interni. Esempi includono il trigger Event Grid e le Funzioni Durature, che utilizzano chiavi di sistema per interagire in modo sicuro con le rispettive API. @@ -192,7 +192,7 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }} ``` -Inoltre, viene creata un'**Identità Gestita** affinché l'azione di Github del repository possa accedere ad Azure con essa. Questo avviene generando una credenziale Federata sull'**Identità Gestita** che consente all'**Emittente** `https://token.actions.githubusercontent.com` e all'**Identificatore del Soggetto** `repo:/:ref:refs/heads/`. +Inoltre, viene creata un'**Identità Gestita** affinché l'azione di Github del repository possa accedere ad Azure. Questo avviene generando una credenziale Federata sull'**Identità Gestita** che consente all'**Emittente** `https://token.actions.githubusercontent.com` e all'**Identificatore del Soggetto** `repo:/:ref:refs/heads/`. > [!CAUTION] > Pertanto, chiunque comprometta quel repository sarà in grado di compromettere la funzione e le Identità Gestite ad essa collegate.