AWS - STS Enum
Reading time: 4 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
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 для ескалації привілеїв:
Post Exploitation
Persistence
References
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.