AWS - STS Enum

Підтримайте HackTricks

STS

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

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

Імітація ролі Assume Role

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

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

Логіка Assume Role

Щоб прийняти роль в тому ж обліковому записі, якщо роль для прийняття дозволяє конкретно 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>

Підвищення привілеїв

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

AWS - STS Privesc

Постексплуатація

AWS - STS Post Exploitation

Збереження доступу

AWS - STS Persistence

Посилання

Підтримайте HackTricks

Last updated