AWS - IAM & STS Unauthenticated Enum

Jifunze kuhusu udukuzi wa AWS kutoka mwanzo hadi mtaalamu na htARTE (Mtaalamu wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Ukusanyaji wa Majukumu na Majina ya Watumiaji kwenye akaunti

Jaribio la Kufikiria Kiotomatiki Jukumu

Mbinu hii haifanyi kazi tena kwani ikiwa jukumu lipo au la, utapata kosa hili daima:

Kosa lilijitokeza (AccessDenied) wakati wa kuita operesheni ya AssumeRole: Mtumiaji: arn:aws:iam::947247140022:user/testenv hana idhini ya kutekeleza: sts:AssumeRole kwenye rasilimali: arn:aws:iam::429217632764:role/account-balanceasdas

Unaweza jaribu hili kwa kukimbia:

aws sts assume-role --role-arn arn:aws:iam::412345678909:role/superadmin --role-session-name s3-access-example

Kujaribu kufikiria jukumu bila idhini inayostahili husababisha ujumbe wa kosa kutoka AWS. Kwa mfano, ikiwa huna idhini, AWS inaweza kurudisha:

An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::012345678901:user/MyUser is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::111111111111:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS

Hii ujumbe unathibitisha uwepo wa jukumu lakini unaonyesha kwamba sera yake ya kuchukua jukumu hairuhusu dhana yako. Kwa upande mwingine, jaribio la kuchukua jukumu lisililopo husababisha kosa tofauti:

An error occurred (AccessDenied) when calling the AssumeRole operation: Not authorized to perform sts:AssumeRole

Kwa kuvutia, njia hii ya kutofautisha kati ya majukumu yaliyopo na yasiyopo inaweza kutumika hata kati ya akaunti tofauti za AWS. Kwa ID halali ya akaunti ya AWS na orodha ya maneno iliyolengwa, mtu anaweza kuchunguza majukumu yaliyopo katika akaunti bila kukutana na vizuizi vyovyote vya asili.

Unaweza kutumia script huu kutambua wakuu wanaowezekana kwa kutumia suala hili.

Sera za Kuamini: Kuvunja Nguvu Majukumu na Watumiaji wa Akaunti za Msalaba

Kuweka au kusasisha sera ya kuamini ya jukumu la IAM kunahusisha kufafanua ni rasilimali au huduma za AWS zipi zinaruhusiwa kuchukua jukumu hilo na kupata vitambulisho vya muda. Ikiwa rasilimali iliyotajwa katika sera ipo, sera ya kuamini inahifadhiwa kwa mafanikio. Walakini, ikiwa rasilimali haipo, kosa linazalishwa, ikionyesha kuwa mkuu batili alitolewa.

Tafadhali elewa kuwa katika rasilimali hiyo unaweza kufafanua jukumu au mtumiaji wa akaunti ya msalaba:

  • arn:aws:iam::acc_id:role/role_name

  • arn:aws:iam::acc_id:user/user_name

Hii ni mfano wa sera:

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":
{
"AWS":"arn:aws:iam::216825089941:role\/Test"
},
"Action":"sts:AssumeRole"
}
]
}

GUI

Hii ni kosa utakaloliona ikiwa unatumia jukumu ambalo halipo. Ikiwa jukumu lipo, sera ita hifadhiwa bila makosa yoyote. (Kosa ni kwa ajili ya kuboresha, lakini pia inafanya kazi wakati wa kuunda)

CLI

### You could also use: aws iam update-assume-role-policy
# When it works
aws iam create-role --role-name Test-Role --assume-role-policy-document file://a.json
{
"Role": {
"Path": "/",
"RoleName": "Test-Role",
"RoleId": "AROA5ZDCUJS3DVEIYOB73",
"Arn": "arn:aws:iam::947247140022:role/Test-Role",
"CreateDate": "2022-05-03T20:50:04Z",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::316584767888:role/account-balance"
},
"Action": [
"sts:AssumeRole"
]
}
]
}
}
}

# When it doesn't work
aws iam create-role --role-name Test-Role2 --assume-role-policy-document file://a.json
An error occurred (MalformedPolicyDocument) when calling the CreateRole operation: Invalid principal in policy: "AWS":"arn:aws:iam::316584767888:role/account-balanceefd23f2"

Unaweza kiotomatiki mchakato huu kwa https://github.com/carlospolop/aws_tools

  • bash unauth_iam.sh -t user -i 316584767888 -r TestRole -w ./unauth_wordlist.txt

Tumia Pacu:

  • run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt

  • run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt

  • Jukumu la admin lililotumiwa kwenye mfano ni jukumu katika akaunti yako litakalotumiwa kwa udanganyifu na pacu ili kuunda sera inayohitajika kwa ajili ya uchambuzi

Privesc

Katika kesi jukumu lilikuwa limeconfigure vibaya na kuruhusu yeyote kudai:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole"
}
]
}

Mshambuliaji anaweza tu kudai hivyo.

Ufikiaji wa Tatu wa OIDC Federation

Fikiria kwamba unaweza kusoma mfumo wa hatua za Github ambao unapata jukumu ndani ya AWS. Imani hii inaweza kutoa ufikiaji kwa jukumu lenye sera ya imani ifuatayo:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::<acc_id>:oidc-provider/token.actions.githubusercontent.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
}
}
}
]
}

Sera hii ya uaminifu inaweza kuwa sahihi, lakini ukosefu wa hali zaidi unapaswa kukufanya usiwaamini. Hii ni kwa sababu jukumu la awali linaweza kuchukuliwa na MTU yeyote kutoka Github Actions! Unapaswa kueleza katika hali pia mambo mengine kama jina la org, jina la repo, env, tawi...

Hitilafu nyingine inayowezekana ni kuongeza hali kama ifuatavyo:

"StringLike": {
"token.actions.githubusercontent.com:sub": "repo:org_name*:*"
}

Tafadhali kumbuka alama ya mwanya (*) kabla ya mambo ya (colon) :. Unaweza kuunda shirika kama org_name1 na kudai jukumu kutoka kwa Hatua ya Github.

Marejeo

Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated