GCP - Artifact Registry Privesc

Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Hifadhi ya Sanaa

Kwa habari zaidi kuhusu Hifadhi ya Sanaa angalia:

pageGCP - Artifact Registry Enum

artifactregistry.repositories.uploadArtifacts

Kwa kibali hiki, muhusika anaweza kupakia toleo mpya la sanaa na nambari ya malicious kama picha za Docker:

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

Ilithibitishwa kwamba inawezekana kupakia picha mpya ya docker yenye nia mbaya yenye jina na lebo ile ile kama ile iliyopo, hivyo ile ya zamani itapoteza lebo na wakati ijayo picha hiyo na lebo hiyo inapokuwa pakuliwa picha yenye nia mbaya itapakuliwa.

Pakia maktaba ya Python

Anza kwa kuunda maktaba ya kupakia (ikiwa unaweza kupakua toleo la hivi karibuni kutoka kwenye usajili unaweza kuepuka hatua hii):

  1. Sanidi muundo wa mradi wako:

  • Unda saraka mpya kwa ajili ya maktaba yako, k.m., hello_world_library.

  • Ndani ya saraka hii, unda saraka nyingine na jina la pakiti yako, k.m., hello_world.

  • Ndani ya saraka yako ya pakiti, unda faili ya __init__.py. Faili hii inaweza kuwa tupu au inaweza kuwa na uanzishaji kwa ajili ya pakiti yako.

mkdir hello_world_library
cd hello_world_library
mkdir hello_world
touch hello_world/__init__.py
  1. Andika nambari ya maktaba yako:

  • Ndani ya saraka ya hello_world, unda faili mpya ya Python kwa ajili ya moduli yako, k.m., greet.py.

  • Andika kazi yako ya "Hello, World!":

# hello_world/greet.py
def say_hello():
return "Hello, World!"
  1. Unda faili ya setup.py:

  • Katika mzizi wa saraka yako ya hello_world_library, unda faili ya setup.py.

  • Faili hii ina maelezo kuhusu maktaba yako na inaambia Python jinsi ya kuaisilisha.

# setup.py
from setuptools import setup, find_packages

setup(
name='hello_world',
version='0.1',
packages=find_packages(),
install_requires=[
# Mahitaji yoyote ya maktaba yako
],
)

Sasa, pakia maktaba:

  1. Jenga pakiti yako:

  • Kutoka kwenye mzizi wa saraka yako ya hello_world_library, endesha:

python3 setup.py sdist bdist_wheel
  1. Sanidi uthibitishaji kwa twine (inayotumika kupakia pakiti yako):

  • Hakikisha una twine imewekwa (pip install twine).

  • Tumia gcloud kuweka mamlaka:

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

rm -rf dist build hello_world.egg-info

Haiwezekani kupakia maktaba ya python yenye toleo sawa na ile iliyopo tayari, lakini inawezekana kupakia toleo kubwa zaidi (au kuongeza .0 ziada mwishoni mwa toleo ikiwa inafanya kazi -sio kwa python hata hivyo-), au kufuta toleo la mwisho na kupakia jipya (inahitaji artifactregistry.versions.delete):

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

artifactregistry.repositories.downloadArtifacts

Kwa kibali hiki unaweza kupakua vitu na kutafuta habari nyeti na mapungufu.

Pakua picha ya Docker:

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

Pakua maktaba ya python:

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
  • Kipi kitatokea ikiwa registries ya mbali na ya kawaida zimechanganywa katika moja ya kubuniwa na pakiti ipo katika zote? Angalia ukurasa huu:

pageGCP - Artifact Registry Persistence

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

Futa vitu kutoka kwenye registry, kama picha za docker:

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

artifactregistry.repositories.delete

Futa hifadhi kamili (hata kama ina maudhui):

``` gcloud artifacts repositories delete --location= ``` ### `artifactregistry.repositories.setIamPolicy`

Mshambuliaji mwenye ruhusa hii anaweza kujipa ruhusa za kufanya baadhi ya mashambulizi ya hifadhi yaliyotajwa hapo awali.

Jifunze kuhusu kudukua AWS kutoka mwanzo hadi mtaalamu na htARTE (Mtaalamu wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated