Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
- Εάν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF, ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Για να δοθεί πρόσβαση στις Github Actions από ένα αποθετήριο Github σε έναν λογαριασμό υπηρεσίας GCP, απαιτούνται τα εξής βήματα:
- Δημιουργία του λογαριασμού υπηρεσίας για πρόσβαση από τις Github Actions με τα επιθυμητά δικαιώματα:
projectId=FIXME
gcloud config set project $projectId
# Create the Service Account
gcloud iam service-accounts create "github-demo-sa"
saId="github-demo-sa@${projectId}.iam.gserviceaccount.com"
# Enable the IAM Credentials API
gcloud services enable iamcredentials.googleapis.com
# Give permissions to SA
gcloud projects add-iam-policy-binding $projectId \
--member="serviceAccount:$saId" \
--role="roles/iam.securityReviewer"
- Δημιουργήστε ένα νέο πιστοποιητικό πιστοποίησης φορτίου εργασίας:
# Create a Workload Identity Pool
poolName=wi-pool
gcloud iam workload-identity-pools create $poolName \
--location global \
--display-name $poolName
poolId=$(gcloud iam workload-identity-pools describe $poolName \
--location global \
--format='get(name)')
- Δημιουργήστε έναν νέο πάροχο OIDC για την πιστοποίηση ταυτότητας της workload identity pool που εμπιστεύεται τις ενέργειες του GitHub (ανάλογα με το όνομα του οργανισμού/αποθετηρίου σε αυτό το σενάριο):
attributeMappingScope=repository # could be sub (GitHub repository and branch) or repository_owner (GitHub organization)
gcloud iam workload-identity-pools providers create-oidc $poolName \
--location global \
--workload-identity-pool $poolName \
--display-name $poolName \
--attribute-mapping "google.subject=assertion.${attributeMappingScope},attribute.actor=assertion.actor,attribute.aud=assertion.aud,attribute.repository=assertion.repository" \
--issuer-uri "https://token.actions.githubusercontent.com"
providerId=$(gcloud iam workload-identity-pools providers describe $poolName \
--location global \
--workload-identity-pool $poolName \
--format='get(name)')
- Τέλος, επιτρέψτε στον κύριο από τον πάροχο να χρησιμοποιήσει έναν υπηρεσιακό κύριο:
gitHubRepoName="repo-org/repo-name"
gcloud iam service-accounts add-iam-policy-binding $saId \
--role "roles/iam.workloadIdentityUser" \
--member "principalSet://iam.googleapis.com/${poolId}/attribute.${attributeMappingScope}/${gitHubRepoName}"
{% hint style="warning" %}
Σημειώστε ότι στο προηγούμενο μέλος καθορίζουμε το org-name/repo-name
ως προϋπόθεση για να έχουμε πρόσβαση στον λογαριασμό υπηρεσίας (μπορούν επίσης να χρησιμοποιηθούν άλλες παράμετροι που το καθιστούν πιο περιοριστικό, όπως ο κλάδος).
Ωστόσο, είναι επίσης δυνατόν να επιτραπεί η πρόσβαση όλων των github στον λογαριασμό υπηρεσίας δημιουργώντας έναν πάροχο όπως ο παρακάτω χρησιμοποιώντας μια μπαλαντέρ: {% endhint %}
# Δημιουργία ενός Workload Identity Pool
poolName=wi-pool2
gcloud iam workload-identity-pools create $poolName \
--location global \
--display-name $poolName
poolId=$(gcloud iam workload-identity-pools describe $poolName \
--location global \
--format='get(name)')
gcloud iam workload-identity-pools providers create-oidc $poolName \
--project="${projectId}" \
--location="global" \
--workload-identity-pool="$poolName" \
--display-name="Πάροχος επίδειξης" \
--attribute-mapping="google.subject=assertion.sub,attribute.actor=assertion.actor,attribute.aud=assertion.aud" \
--issuer-uri="https://token.actions.githubusercontent.com"
providerId=$(gcloud iam workload-identity-pools providers describe $poolName \
--location global \
--workload-identity-pool $poolName \
--format='get(name)')
# ΕΛΕΓΞΤΕ ΤΗΝ ΜΠΑΛΑΝΤΕΡ
gcloud iam service-accounts add-iam-policy-binding "${saId}" \
--project="${projectId}" \
--role="roles/iam.workloadIdentityUser" \
--member="principalSet://iam.googleapis.com/${poolId}/*"
{% hint style="warning" %}
Σε αυτήν την περίπτωση, οποιοσδήποτε μπορεί να έχει πρόσβαση στον λογαριασμό υπηρεσίας από τις ενέργειες του github, επομένως είναι σημαντικό να ελέγχετε πάντα πώς ορίζεται το μέλος.
Πρέπει πάντα να είναι κάτι τέτοιο:
attribute.{custom_attribute}
:principalSet://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/attribute.{custom_attribute}/{value}
{% endhint %}
Θυμηθείτε να αλλάξετε τα ${providerId}
και ${saId}
με τις αντίστοιχες τιμές τους:
name: Check GCP action
on:
workflow_dispatch:
pull_request:
branches:
- main
permissions:
id-token: write
jobs:
Get_OIDC_ID_token:
runs-on: ubuntu-latest
steps:
- id: 'auth'
name: 'Authenticate to GCP'
uses: 'google-github-actions/auth@v0.3.1'
with:
create_credentials_file: 'true'
workload_identity_provider: '${providerId}'
service_account: '${saId}'
- id: 'gcloud'
name: 'gcloud'
run: |-
gcloud auth login --brief --cred-file="${{ steps.auth.outputs.credentials_file_path }}"
gcloud auth list
gcloud projects list
Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
- Εάν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στη 💬 ομάδα Discord ή στη ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.