AWS - STS Enum

Support HackTricks

STS

AWS Security Token Service (STS) в основному призначений для видачі тимчасових, обмежених привілеїв облікових даних. Ці облікові дані можуть бути запитані для AWS Identity and Access Management (IAM) користувачів або для автентифікованих користувачів (федеративних користувачів).

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

Assume Role Impersonation

Дія AssumeRole, надана AWS STS, є критично важливою, оскільки дозволяє суб'єкту отримувати облікові дані для іншого суб'єкта, фактично імітуючи його. Після виклику вона відповідає з ідентифікатором ключа доступу, секретним ключем і токеном сесії, що відповідає вказаному ARN.

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

Assume Role Logic

Щоб прийняти роль в одному й тому ж обліковому записі, якщо роль, яку потрібно прийняти, дозволяє конкретно роль ARN як у:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:role/priv-role"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

Роль priv-role в цьому випадку не потребує спеціального дозволу для прийняття цієї ролі (достатньо цього дозволу).

Однак, якщо роль дозволяє обліковому запису приймати її, як у:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

Роль, яку намагаються взяти, повинна мати конкретний дозвіл sts:AssumeRole на цю роль для її взяття.

Якщо ви намагаєтеся взяти роль з іншого облікового запису, взята роль повинна це дозволяти (вказуючи ARN ролі або зовнішній обліковий запис), і роль, яка намагається взяти іншу, МУСТИ мати дозволи на її взяття (в цьому випадку це не є необов'язковим, навіть якщо взята роль вказує ARN).

Enumeration

# Get basic info of the creds
aws sts get-caller-identity
aws sts get-access-key-info --access-key-id <AccessKeyID>

# Get CLI a session token with current creds
## Using CLI creds
## You cannot get session creds using session creds
aws sts get-session-token
## MFA
aws sts get-session-token --serial-number <arn_device> --token-code <otp_code>

Privesc

На наступній сторінці ви можете перевірити, як зловживати дозволами STS для ескалації привілеїв:

AWS - STS Privesc

Post Exploitation

AWS - STS Post Exploitation

Persistence

AWS - STS Persistence

References

Support HackTricks

Last updated