GCP - Artifact Registry Privesc

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Artifact Registry

आर्टिफैक्ट रजिस्ट्री के बारे में अधिक जानकारी के लिए देखें:

pageGCP - Artifact Registry Enum

artifactregistry.repositories.uploadArtifacts

इस अनुमति के साथ एक हमलावर नए संस्करणों को आर्टिफैक्ट्स के साथ अपलोड कर सकता है जैसे कि डॉकर छवियाँ:

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

यह जांचा गया था कि एक नए दुष्ट डॉकर इमेज अपलोड करना संभव है जिसका नाम और टैग पहले से मौजूद है, इसलिए पुराना टैग खो जाएगा और अगली बार जब उस टैग के साथ वह इमेज डाउनलोड किया जाएगा तो दुष्ट इमेज डाउनलोड किया जाएगा।

Python पुस्तकालय अपलोड करें

अपलोड करने के लिए पुस्तकालय बनाना शुरू करें (यदि आप रजिस्ट्री से नवीनतम संस्करण डाउनलोड कर सकते हैं तो आप इस कदम को छोड़ सकते हैं):

  1. अपने परियोजना संरचना को सेट अप करें:

  • अपनी पुस्तकालय के लिए एक नया निर्देशिका बनाएं, उदाहरण के लिए, hello_world_library

  • इस निर्देशिका के अंदर, अपने पैकेज के नाम से एक और निर्देशिका बनाएं, उदाहरण के लिए, hello_world

  • अपने पैकेज निर्देशिका के अंदर, एक __init__.py फ़ाइल बनाएं। इस फ़ाइल में कोई भी विवरण न हो या आपके पैकेज के लिए प्रारंभिकीकरण हो सकता है।

mkdir hello_world_library
cd hello_world_library
mkdir hello_world
touch hello_world/__init__.py
  1. अपनी पुस्तकालय कोड लिखें:

  • hello_world निर्देशिका के अंदर, अपने मॉड्यूल के लिए एक नया पायथन फ़ाइल बनाएं, उदाहरण के लिए, greet.py

  • अपना "Hello, World!" फ़ंक्शन लिखें:

# hello_world/greet.py
def say_hello():
return "Hello, World!"
  1. एक setup.py फ़ाइल बनाएं:

  • अपने hello_world_library निर्देशिका की मूल में, एक setup.py फ़ाइल बनाएं।

  • यह फ़ाइल आपकी पुस्तकालय के बारे में मेटाडेटा शामिल करती है और पायथन को बताती है कि इसे कैसे स्थापित करें।

# setup.py
from setuptools import setup, find_packages

setup(
name='hello_world',
version='0.1',
packages=find_packages(),
install_requires=[
# आपकी पुस्तकालय को जो भी आवश्यकता हो
],
)

अब, पुस्तकालय को अपलोड करें:

  1. अपना पैकेज बनाएं:

  • अपने hello_world_library निर्देशिका की मूल से, निम्नलिखित को चलाएं:

python3 setup.py sdist bdist_wheel
  1. twine के लिए प्रमाणीकरण कॉन्फ़िगर करें (अपने पैकेज को अपलोड करने के लिए उपयोग किया जाता है):

  • सुनिश्चित करें कि twine स्थापित है (pip install twine करें)।

  • प्रमाणीकरण कॉन्फ़िगर करने के लिए gcloud का उपयोग करें:

twine upload --username 'oauth2accesstoken' --password "$(gcloud auth print-access-token)" --repository-url https://<location>-python.pkg.dev/<project-id>/<repo-name>/ dist/*
  1. बिल्ड को साफ करें

rm -rf dist build hello_world.egg-info

एक पायथन लाइब्रेरी उपलब्ध संस्करण के साथ अपलोड करना संभव नहीं है, लेकिन अधिक वर्शन अपलोड करना संभव है (या यदि काम करता है तो संस्करण के अंत में .0 जोड़ें), या अंतिम संस्करण को हटाकर एक नया अपलोड करना संभव है (जिसके लिए artifactregistry.versions.delete) की आवश्यकता है**:

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

artifactregistry.repositories.downloadArtifacts

इस अनुमति के साथ आप आर्टिफैक्ट्स डाउनलोड कर सकते हैं और संवेदनशील जानकारी और कमजोरियों की खोज कर सकते हैं।

एक डॉकर छवि डाउनलोड करें:

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

एक 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
  • अगर एक वर्चुअल रजिस्ट्री में रिमोट और मानक रजिस्ट्री मिलाई जाए और एक पैकेज दोनों में मौजूद हो, तो क्या होगा? इस पेज की जाँच करें:

pageGCP - Artifact Registry Persistence

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

रजिस्ट्री से आर्टिफैक्ट्स को हटाएं, जैसे डॉकर इमेजेस:

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

artifactregistry.repositories.setIamPolicy

इस अनुमति के साथ एक हमलावर खुद को अनुमतियाँ दे सकता है ताकि पहले उल्लिखित भंडारण हमलों में से कुछ कर सके।

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated