GCP - Artifact Registry Privesc

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Artefakregistreerder

Vir meer inligting oor Artefakregistreerder, kyk:

GCP - Artifact Registry Enum

artifactregistry.repositories.uploadArtifacts

Met hierdie toestemming kan 'n aanvaller nuwe weergawes van die artefakte met skadelike kode soos Docker-beelde oplaai:

# Configure docker to use gcloud to authenticate with Artifact Registry
gcloud auth configure-docker <location>-docker.pkg.dev

# tag the image to upload it
docker tag <local-img-name>:<local-tag> <location>-docker.pkg.dev/<proj-name>/<repo-name>/<img-name>:<tag>

# Upload it
docker push <location>-docker.pkg.dev/<proj-name>/<repo-name>/<img-name>:<tag>

Daar is vasgestel dat dit moontlik is om 'n nuwe skadelike docker-beeld met dieselfde naam en etiket as die reeds teenwoordige een te laai, sodat die oue een die etiket sal verloor en die volgende keer as daardie beeld met daardie etiket afgelaai word, die skadelike een afgelaai sal word.

Laai 'n Python-biblioteek op

Begin deur die biblioteek wat jy wil oplaai te skep (as jy die nuutste weergawe van die register kan aflaai, kan jy hierdie stap vermy):

  1. Stel jou projekstruktuur op:

  • Skep 'n nuwe gids vir jou biblioteek, bv. hello_world_library.

  • Binne hierdie gids, skep 'n ander gids met jou pakkernaam, bv. hello_world.

  • Binne jou pakkergids, skep 'n __init__.py-lêer. Hierdie lêer kan leeg wees of kan inisialisasies vir jou pakkette bevat.

mkdir hello_world_library
cd hello_world_library
mkdir hello_world
touch hello_world/__init__.py
  1. Skryf jou biblioteekkode:

  • Binne die hello_world-gids, skep 'n nuwe Python-lêer vir jou module, bv. greet.py.

  • Skryf jou "Hello, World!"-funksie:

# hello_world/greet.py
def say_hello():
return "Hello, World!"
  1. Skep 'n setup.py-lêer:

  • In die hoof van jou hello_world_library-gids, skep 'n setup.py-lêer.

  • Hierdie lêer bevat metadata oor jou biblioteek en vertel Python hoe om dit te installeer.

# setup.py
from setuptools import setup, find_packages

setup(
name='hello_world',
version='0.1',
packages=find_packages(),
install_requires=[
# Enige afhanklikhede wat jou biblioteek nodig het
],
)

Nou, laai die biblioteek op:

  1. Bou jou pakkie:

  • Voer vanaf die hoof van jou hello_world_library-gids uit:

python3 setup.py sdist bdist_wheel
  1. Stel verifikasie vir twine op (gebruik om jou pakkie op te laai):

  • Maak seker dat jy twine geïnstalleer het (pip install twine).

  • Gebruik gcloud om geloofsbriewe te konfigureer:

twine upload --username 'oauth2accesstoken' --password "$(gcloud auth print-access-token)" --repository-url https://<location>-python.pkg.dev/<project-id>/<repo-name>/ dist/*
  1. Maak die bou skoon

rm -rf dist build hello_world.egg-info

Dit is nie moontlik om 'n Python-biblioteek met dieselfde weergawe as die een wat reeds teenwoordig is, op te laai nie, maar dit is moontlik om groter weergawes op te laai (of 'n ekstra .0 aan die einde van die weergawe toe te voeg as dit werk - nie in Python nie -), of om die laaste weergawe te verwyder en 'n nuwe een op te laai met (benodig artifactregistry.versions.delete):

gcloud artifacts versions delete <version> --repository=<repo-name> --location=<location> --package=<lib-name>

artifactregistry.repositories.downloadArtifacts

Met hierdie toestemming kan jy kunswerke aflaai en soek na sensitiewe inligting en kwesbaarhede.

Laai 'n Docker-beeld af:

# Configure docker to use gcloud to authenticate with Artifact Registry
gcloud auth configure-docker <location>-docker.pkg.dev

# Dowload image
docker pull <location>-docker.pkg.dev/<proj-name>/<repo-name>/<img-name>:<tag>

Laai 'n python biblioteek af:

pip install <lib-name> --index-url "https://oauth2accesstoken:$(gcloud auth print-access-token)@<location>-python.pkg.dev/<project-id>/<repo-name>/simple/" --trusted-host <location>-python.pkg.dev --no-cache-dir
  • Wat gebeur as 'n afgeleë en 'n standaard registries gemeng word in 'n virtuele een en 'n pakkie in beide bestaan? Kyk na hierdie bladsy:

GCP - Artifact Registry Persistence

artifactregistry.tags.delete, artifactregistry.versions.delete, artifactregistry.packages.delete, (artifactregistry.repositories.get, artifactregistry.tags.get, artifactregistry.tags.list)

Verwyder kunswerke uit die register, soos Docker-beelde:

# Delete a docker image
gcloud artifacts docker images delete <location>-docker.pkg.dev/<proj-name>/<repo-name>/<img-name>:<tag>

artifactregistry.repositories.delete

Verwyder 'n volledige argief (selfs as dit inhoud het):

gcloud artifacts repositories delete <repo-name> --location=<location>

artifactregistry.repositories.setIamPolicy

'n Aanvaller met hierdie toestemming kan homself toestemmings gee om sommige van die vorige genoemde repository-aanvalle uit te voer.

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated