GCP - IAM Privesc
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Vind meer inligting oor IAM in:
GCP - IAM, Principals & Org Policies Enumiam.roles.update
(iam.roles.get
)'n Aanvaller met die genoemde toestemmings sal in staat wees om 'n rol wat aan jou toegeken is, op te dateer en jou ekstra toestemmings te gee vir ander hulpbronne soos:
You can find a script to automate the creation, exploit and cleaning of a vuln environment here and a python script to abuse this privilege here. For more information check the original research.
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)'n Aanvaller met die genoemde toestemmings sal in staat wees om 'n toegangstoken aan te vra wat aan 'n Diensrekening behoort, so dit is moontlik om 'n toegangstoken van 'n Diensrekening met meer bevoegdhede as ons s'n aan te vra.
U kan 'n skrip vind om die skepping, benutting en skoonmaak van 'n kwesbare omgewing hier te outomatiseer en 'n python-skrip om hierdie voorreg te misbruik hier. Vir meer inligting, kyk na die oorspronklike navorsing.
iam.serviceAccountKeys.create
'n Aanvaller met die genoemde toestemmings sal in staat wees om 'n gebruiker-beheerde sleutel vir 'n Diensrekening te skep, wat ons sal toelaat om GCP as daardie Diensrekening te benader.
U kan 'n skrip vind om die skepping, benutting en skoonmaak van 'n kwesbare omgewing hier te outomatiseer en 'n python-skrip om hierdie voorreg te misbruik hier. Vir meer inligting, kyk na die oorspronklike navorsing.
Let daarop dat iam.serviceAccountKeys.update
nie sal werk om die sleutel van 'n SA te wysig nie, omdat die toestemmings iam.serviceAccountKeys.create
ook nodig is om dit te doen.
iam.serviceAccounts.implicitDelegation
As jy die iam.serviceAccounts.implicitDelegation
toestemming op 'n Diensrekening het wat die iam.serviceAccounts.getAccessToken
toestemming op 'n derde Diensrekening het, kan jy implicitDelegation gebruik om 'n token vir daardie derde Diensrekening te skep. Hier is 'n diagram om te help verduidelik.
Let daarop dat volgens die dokumentasie, die delegasie van gcloud
slegs werk om 'n token te genereer met die generateAccessToken() metode. So hier is hoe om 'n token direk met die API te verkry:
You can find a script to automate the skepping, ontginning en skoonmaak van 'n kwesbare omgewing hier and a python script to abuse this privilege hier. For more information check the oorspronklike navorsing.
iam.serviceAccounts.signBlob
An attacker with the mentioned permissions will be able to onderteken arbitrêre payloads in GCP. So it'll be possible to skep 'n ongetekende JWT van die SA en dit dan as 'n blob stuur om die JWT te laat onderteken deur die SA wat ons teiken. For more information lees dit.
You can find a script to automate the skepping, ontginning en skoonmaak van 'n kwesbare omgewing hier and a python script to abuse this privilege hier and hier. For more information check the oorspronklike navorsing.
iam.serviceAccounts.signJwt
An attacker with the mentioned permissions will be able to onderteken goed gevormde JSON web tokens (JWTs). The difference with the previous method is that in plaas daarvan om google 'n blob wat 'n JWT bevat te laat onderteken, gebruik ons die signJWT metode wat reeds 'n JWT verwag. This makes it easier to use but you can only sign JWT instead of any bytes.
You can find a script to automate the skepping, ontginning en skoonmaak van 'n kwesbare omgewing hier and a python script to abuse this privilege hier. For more information check the oorspronklike navorsing.
iam.serviceAccounts.setIamPolicy
An attacker with the mentioned permissions will be able to voeg IAM-beleid by diensrekeninge. You can abuse it to gee vir jouself the permissions you need to impersonate the service account. In the following example we are granting ourselves the roles/iam.serviceAccountTokenCreator
role over the interesting SA:
You can find a script to automate the creation, exploit and cleaning of a vuln environment here.
iam.serviceAccounts.actAs
Die iam.serviceAccounts.actAs toestemming is soos die iam:PassRole toestemming van AWS. Dit is noodsaaklik vir die uitvoering van take, soos die inisieer van 'n Compute Engine-instansie, aangesien dit die vermoë bied om "as" 'n diensrekening op te tree, wat veilige toestemmingbestuur verseker. Sonder dit kan gebruikers onregmatige toegang verkry. Boonop behels die uitbuiting van die iam.serviceAccounts.actAs verskeie metodes, wat elkeen 'n stel toestemmings vereis, in teenstelling met ander metodes wat net een benodig.
Impersonasie van 'n diensrekening kan baie nuttig wees om nuwe en beter voorregte te verkry. Daar is drie maniere waarop jy ‘n ander diensrekening kan impersonate:
Verifikasie met RSA privaat sleutels (hierbo behandel)
Magtiging met Cloud IAM beleide (hier behandel)
Ontplooiing van werksgeleenthede op GCP dienste (meer van toepassing op die kompromie van 'n gebruikersrekening)
iam.serviceAccounts.getOpenIdToken
'n Aanvaller met die genoemde toestemmings sal in staat wees om 'n OpenID JWT te genereer. Hierdie word gebruik om identiteit te bevestig en dra nie noodwendig enige implisiete magtiging teen 'n hulpbron nie.
Volgens hierdie interessante pos, is dit nodig om die gehoor aan te dui (diens waar jy die token wil gebruik om te verifieer) en jy sal 'n JWT ontvang wat deur google onderteken is wat die diensrekening en die gehoor van die JWT aandui.
Jy kan 'n OpenIDToken genereer (as jy die toegang het) met:
Dan kan jy dit net gebruik om toegang tot die diens te verkry met:
Sommige dienste wat outentisering via hierdie tipe tokens ondersteun, is:
Google Cloud Endpoints (as Google OIDC gebruik word)
Jy kan 'n voorbeeld vind van hoe om 'n OpenID-token namens 'n diensrekening te skep hier.
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)