AWS - IAM Post Exploitation

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

IAM

Для отримання додаткової інформації про доступ IAM:

pageAWS - IAM Enum

Проблема збиткового заступника

Якщо ви дозволяєте зовнішньому обліковому запису (A) отримати доступ до ролі у вашому обліковому записі, ви, ймовірно, не матимете жодної видимості на того, хто саме може отримати доступ до цього зовнішнього облікового запису. Це проблема, оскільки якщо інший зовнішній обліковий запис (B) може отримати доступ до зовнішнього облікового запису (A), то можливо, що B також зможе отримати доступ до вашого облікового запису.

Тому, коли дозволяєте зовнішньому обліковому запису отримати доступ до ролі у вашому обліковому записі, можна вказати ExternalId. Це "секретний" рядок, який зовнішній обліковий запис (A) повинен вказати, щоб припустити роль у вашій організації. Оскільки зовнішній обліковий запис B не буде знати цей рядок, навіть якщо він має доступ до A, він не зможе отримати доступ до вашої ролі.

Проте слід зауважити, що цей "секретний" ExternalId не є секретним, будь-хто, хто може читати політику припущення ролі IAM, зможе його побачити. Але поки зовнішній обліковий запис A знає його, але зовнішній обліковий запис B не знає його, це запобігає B зловживанню A для отримання доступу до вашої ролі.

Приклад:

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

Для того щоб зловмисник міг використовувати збентеженого заступника, йому потрібно буде знайти якимось чином, чи можуть принципали поточного облікового запису уособлювати ролі в інших облікових записах.

Несподівані довіри

Дієслово як принципал

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

Ця політика дозволяє всім AWS припускати роль.

Служба як принципал

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

Ця політика дозволяє будь-якому обліковому запису налаштовувати свій apigateway для виклику цього Lambda.

S3 як принципал

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

Якщо в якості принципала вказано відро S3, оскільки відра S3 не мають ідентифікатора облікового запису, якщо ви видалили своє відро і зловмисник створив його у своєму власному обліковому запису, то вони можуть зловживати цим.

Не підтримується

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

Один зі способів уникнення проблеми Confused Deputy - використання умови з AWS:SourceArn для перевірки походження ARN. Однак деякі сервіси можуть не підтримувати це (наприклад, CloudTrail за деякими джерелами).

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated