AWS - IAM Post Exploitation

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

IAM

Aby uzyskać więcej informacji na temat dostępu IAM:

pageAWS - IAM, Identity Center & SSO Enum

Problem zastępcy w konfuzji

Jeśli pozwolisz zewnętrznemu kontu (A) uzyskać dostęp do roli w twoim koncie, prawdopodobnie nie będziesz miał żadnej widoczności na to, kto dokładnie może uzyskać dostęp do tego zewnętrznego konta. To jest problem, ponieważ jeśli inne zewnętrzne konto (B) może uzyskać dostęp do zewnętrznego konta (A), istnieje możliwość, że B będzie również mógł uzyskać dostęp do twojego konta.

Dlatego, gdy zezwalasz zewnętrznemu kontu na dostęp do roli w twoim koncie, można określić ExternalId. Jest to "sekretny" ciąg znaków, który zewnętrzne konto (A) musi podać, aby przyjąć rolę w twojej organizacji. Ponieważ zewnętrzne konto B nie będzie znać tego ciągu znaków, nawet jeśli ma dostęp do A, nie będzie w stanie uzyskać dostępu do twojej roli.

Należy jednak zauważyć, że to "sekretne" ExternalId nie jest tajne, każdy kto może czytać politykę przyjmowania roli IAM, będzie w stanie go zobaczyć. Ale o ile zewnętrzne konto A go zna, a zewnętrzne konto B nie zna, zapobiega to nadużyciom B wobec A w celu uzyskania dostępu do twojej roli.

Przykład:

{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "Example Corp's AWS Account ID"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "12345"
}
}
}
}

Aby atakujący mógł wykorzystać zdezorientowanego zastępcę, będzie musiał jakoś dowiedzieć się, czy podmioty bieżącego konta mogą podawać się za role w innych kontach.

Nieoczekiwane zaufania

Gwiazdka jako podmiot

{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": { "AWS": "*" },
}

Ta polityka pozwala wszystkim usługom AWS przejąć rolę.

Usługa jako podmiot

{
"Action": "lambda:InvokeFunction",
"Effect": "Allow",
"Principal": { "Service": "apigateway.amazonaws.com" },
"Resource": "arn:aws:lambda:000000000000:function:foo"
}

Ta polityka pozwala każdemu kontu skonfigurować swoje apigateway, aby wywoływał tę Lambdę.

S3 jako podmiot

"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:::source-bucket" },
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}

Jeśli jako podmiot zostanie podana wiadro S3, ponieważ wiadra S3 nie mają identyfikatora konta, jeśli usuniesz swoje wiadro, a atakujący je utworzy w swoim własnym koncie, to mogą z tego skorzystać.

Nieobsługiwane

{
"Effect": "Allow",
"Principal": {"Service": "cloudtrail.amazonaws.com"},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*"
}

Referencje

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated