GCP - Artifact Registry Privesc

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Artifakt Registar

Za više informacija o Artifakt Registru pogledajte:

pageGCP - Artifact Registry Enum

artifactregistry.repositories.uploadArtifacts

Sa ovom dozvolom napadač može otpremiti nove verzije artifakata sa zlonamernim kodom poput Docker slika:

# 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>

Provereno je da je moguće otpremiti novu zlonamernu Docker sliku sa istim imenom i oznakom kao već prisutna, tako da će stara izgubiti oznaku i sledeći put kada se ta slika sa tom oznakom preuzme, preuzeće se zlonamerna slika.

Otpremite Python biblioteku

Započnite tako što ćete kreirati biblioteku koju ćete otpremiti (ako možete preuzeti najnoviju verziju iz registra, možete preskočiti ovaj korak):

  1. Postavite strukturu projekta:

  • Kreirajte novi direktorijum za vašu biblioteku, na primer, hello_world_library.

  • Unutar ovog direktorijuma, kreirajte još jedan direktorijum sa imenom vašeg paketa, na primer, hello_world.

  • Unutar direktorijuma vašeg paketa, kreirajte __init__.py fajl. Ovaj fajl može biti prazan ili može sadržati inicijalizacije za vaš paket.

mkdir hello_world_library
cd hello_world_library
mkdir hello_world
touch hello_world/__init__.py
  1. Napišite kod vaše biblioteke:

  • Unutar direktorijuma hello_world, kreirajte novi Python fajl za vaš modul, na primer, greet.py.

  • Napišite funkciju "Hello, World!":

# hello_world/greet.py
def say_hello():
    return "Hello, World!"
  1. Kreirajte setup.py fajl:

  • U korenu vašeg direktorijuma hello_world_library, kreirajte setup.py fajl.

  • Ovaj fajl sadrži metapodatke o vašoj biblioteci i govori Pythonu kako da je instalira.

# setup.py
from setuptools import setup, find_packages

setup(
    name='hello_world',
    version='0.1',
    packages=find_packages(),
    install_requires=[
        # Bilo koje zavisnosti koje vaša biblioteka zahteva
    ],
)

Sada, otpremite biblioteku:

  1. Izgradite vaš paket:

  • Iz korena vašeg direktorijuma hello_world_library, pokrenite:

python3 setup.py sdist bdist_wheel
  1. Konfigurišite autentifikaciju za twine (koristi se za otpremanje vašeg paketa):

  • Proverite da imate instaliran twine (pip install twine).

  • Koristite gcloud da konfigurišete akreditacije:

twine upload --username 'oauth2accesstoken' --password "$(gcloud auth print-access-token)" --repository-url https://<lokacija>-python.pkg.dev/<project-id>/<repo-name>/ dist/*
  1. Očistite izgradnju

rm -rf dist build hello_world.egg-info

Nije moguće otpremiti Python biblioteku iste verzije kao već prisutnu, ali je moguće otpremiti veće verzije (ili dodati dodatno .0 na kraju verzije ako to radi - ne u Pythonu), ili obrisati poslednju verziju i otpremiti novu (potrebno je artifactregistry.versions.delete):

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

artifactregistry.repositories.downloadArtifacts

Sa ovom dozvolom možete preuzeti artefakte i pretraživati osetljive informacije i ranjivosti.

Preuzmite Docker sliku:

# 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>

Preuzmite python biblioteku:

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
  • Šta se dešava ako se mešaju udaljeni i standardni registri u virtuelnom i paket postoji u oba? Proverite ovu stranicu:

pageGCP - Artifact Registry Persistence

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

Obrišite artefakte iz registra, poput Docker slika:

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

artifactregistry.repositories.delete

Obrišite celokupni repozitorijum (čak i ako ima sadržaj):

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

artifactregistry.repositories.setIamPolicy

Napadač sa ovlašćenjem može sebi dati dozvole da izvrši neke od prethodno pomenutih napada na repozitorijume.

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini da podržite HackTricks:

Last updated