AWS - IAM Post Exploitation

Reading time: 4 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

IAM

Za više informacija o IAM pristupu:

AWS - IAM, Identity Center & SSO Enum

Problem zbunjenog zamenika

Ako dozvolite eksternom nalogu (A) da pristupi rolu u vašem nalogu, verovatno ćete imati 0 vidljivosti o tome ko tačno može pristupiti tom eksternom nalogu. To je problem, jer ako drugi eksterni nalog (B) može pristupiti eksternom nalogu (A), moguće je da B takođe može pristupiti vašem nalogu.

Stoga, kada dozvoljavate eksternom nalogu da pristupi roli u vašem nalogu, moguće je odrediti ExternalId. Ovo je "tajna" string koja eksterni nalog (A) mora da navede kako bi preuzeo ulogu u vašoj organizaciji. Kako eksterni nalog B neće znati ovu string, čak i ako ima pristup A, neće moći da pristupi vašoj roli.

Međutim, imajte na umu da ova ExternalId "tajna" nije tajna, svako ko može da pročita IAM politiku preuzimanja uloge moći će da je vidi. Ali sve dok eksterni nalog A to zna, a eksterni nalog B to ne zna, to sprečava B da zloupotrebi A kako bi pristupio vašoj roli.

Primer:

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

warning

Da bi napadač iskoristio zbunjenog zamenika, moraće nekako da sazna da li subjekti trenutnog naloga mogu da se predstavljaju kao uloge u drugim nalozima.

Neočekivana poverenja

Wildcard kao subjekt

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

Ova politika dozvoljava svim AWS da preuzmu ulogu.

Usluga kao glavni

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

Ova politika dozvoljava bilo kojem nalogu da konfiguriše svoj apigateway da poziva ovu Lambda.

S3 kao glavni

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

Ako je S3 bucket dat kao principal, pošto S3 bucket-i nemaju Account ID, ako ste obrisali svoj bucket i napadač ga je kreirao u svom nalogu, mogli bi to zloupotrebiti.

Nije podržano

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

Uobičajen način da se izbegnu problemi sa Confused Deputy je korišćenje uslova sa AWS:SourceArn za proveru izvora ARN. Međutim, neke usluge možda to ne podržavaju (kao što je CloudTrail prema nekim izvorima).

References

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks