diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md index aec27acc0..57009989d 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md @@ -10,16 +10,16 @@ Za više informacija pogledajte: ../aws-services/aws-secrets-manager-enum.md {{#endref}} -### Čitanje tajni +### Read Secrets -**Tajne su same po sebi osetljive informacije**, [pogledajte privesc stranicu](../aws-privilege-escalation/aws-secrets-manager-privesc.md) da biste naučili kako ih pročitati. +**secrets sami po sebi predstavljaju osetljive informacije**, [pogledajte privesc stranicu](../aws-privilege-escalation/aws-secrets-manager-privesc.md) da biste naučili kako da ih pročitate. -### DoS - Promena vrednosti tajne +### DoS Change Secret Value -Promenom vrednosti tajne možete **izazvati DoS svim sistemima koji zavise od te vrednosti.** +Promenom vrednosti secret-a možete izazvati **DoS svih sistema koji zavise od te vrednosti.** > [!WARNING] -> Imajte na umu da se prethodne vrednosti takođe čuvaju, pa je lako jednostavno vratiti prethodnu vrednost. +> Imajte na umu da se prethodne vrednosti takođe čuvaju, pa je jednostavno vratiti se na prethodnu vrednost. ```bash # Requires permission secretsmanager:PutSecretValue aws secretsmanager put-secret-value \ @@ -28,19 +28,19 @@ aws secretsmanager put-secret-value \ ``` ### DoS Change KMS key -Ako napadač ima dozvolu secretsmanager:UpdateSecret, može da konfiguriše secret da koristi KMS key koji je u vlasništvu napadača. Taj key je inicijalno podešen tako da bilo ko može da mu pristupi i koristi ga, pa je moguće ažurirati secret sa novim key-jem. Ako key ne bi bio dostupan, secret ne bi mogao biti ažuriran. +Ako napadač ima dozvolu secretsmanager:UpdateSecret, može da konfiguriše secret da koristi KMS key u vlasništvu napadača. Taj key je inicijalno podešen tako da svako može da mu pristupi i koristi ga, pa je moguće ažurirati secret novim key-jem. Ako key nije bio dostupan, secret ne bi mogao biti ažuriran. -Nakon promene key-ja za secret, napadač menja konfiguraciju svog key-ja tako da samo on može da mu pristupi. Na taj način, u narednim verzijama secret-a, on će biti enkriptovan novim key-jem, i pošto neće postojati pristup, mogućnost preuzimanja secret-a biće izgubljena. +Nakon promene key-ja za secret, napadač menja konfiguraciju svog key-ja tako da samo on može da mu pristupi. Na taj način, u narednim verzijama secreta, one će biti enkriptovane novim key-jem, i pošto nema pristupa tom key-ju, mogućnost preuzimanja secreta će biti izgubljena. -Važno je napomenuti da će ova nedostupnost nastupiti samo u kasnijim verzijama, nakon što se sadržaj secret-a promeni, jer je trenutna verzija i dalje enkriptovana originalnim KMS key-jem. +Važno je napomenuti da će ta nedostupnost nastupiti samo u kasnijim verzijama, nakon što se sadržaj secreta promeni, jer je trenutna verzija i dalje enkriptovana originalnim KMS key-jem. ```bash 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 tajne +### DoS Deleting Secret -Najmanji broj dana za brisanje tajne je 7 +Minimalan broj dana za brisanje secret-a je 7 ```bash aws secretsmanager delete-secret \ --secret-id MyTestSecret \ @@ -48,27 +48,27 @@ aws secretsmanager delete-secret \ ``` ## secretsmanager:RestoreSecret -Moguće je vratiti secret, što omogućava obnavljanje secretova koji su zakazani za brisanje, pošto je minimalni period brisanja 7 dana, a maksimalni 30 dana. Zajedno sa dozvolom secretsmanager:GetSecretValue, ovo omogućava pristup njihovom sadržaju. +Moguće je vratiti secret, što omogućava obnavljanje secrets koji su zakazani za brisanje, pošto je minimalni period brisanja secrets 7 dana, a maksimalni 30 dana. U kombinaciji sa permisijom secretsmanager:GetSecretValue, ovo omogućava preuzimanje njihovog sadržaja. -Da biste oporavili secret koji je u procesu brisanja, možete koristiti sledeću komandu: +Da biste povratili secret koji je u procesu brisanja, možete koristiti sledeću komandu: ```bash aws secretsmanager restore-secret \ --secret-id ``` ## secretsmanager:DeleteResourcePolicy -Ova akcija omogućava brisanje politike resursa koja kontroliše ko može pristupiti tajni. Ovo može dovesti do DoS-a ako je politika resursa konfigurisana da dozvoljava pristup određenom skupu korisnika. +Ova akcija omogućava brisanje politike resursa koja kontroliše ko može da pristupi tajni. Ovo može dovesti do DoS-a ako je politika resursa konfigurisana da dopušta pristup određenom skupu korisnika. -Za brisanje politike resursa: +Da biste obrisali politiku resursa: ```bash aws secretsmanager delete-resource-policy \ --secret-id ``` ## secretsmanager:UpdateSecretVersionStage -Stanja tajne se koriste za upravljanje njenim verzijama. AWSCURRENT označava aktivnu verziju koju aplikacije koriste, AWSPREVIOUS čuva prethodnu verziju kako biste se mogli vratiti unazad po potrebi, a AWSPENDING se koristi u procesu rotacije da pripremi i validira novu verziju pre nego što je učini trenutnom. +Stanja tajne se koriste za upravljanje verzijama tajne. AWSCURRENT označava aktivnu verziju koju koriste aplikacije, AWSPREVIOUS čuva prethodnu verziju kako biste se mogli vratiti unazad ako je potrebno, a AWSPENDING se koristi u procesu rotacije da pripremi i verifikuje novu verziju pre nego što je učini trenutnom. -Aplikacije uvek čitaju verziju označenu AWSCURRENT. Ako neko premesti tu oznaku na pogrešnu verziju, aplikacije će koristiti nevažeće kredencijale i mogu prestati da rade. +Aplikacije uvek čitaju verziju označenu sa AWSCURRENT. Ako neko premesti tu oznaku na pogrešnu verziju, aplikacije će koristiti nevažeće kredencijale i mogu zakazati. AWSPREVIOUS se ne koristi automatski. Međutim, ako se AWSCURRENT ukloni ili nepravilno dodeli, može izgledati da sve i dalje radi sa prethodnom verzijom. ```bash @@ -79,3 +79,52 @@ aws secretsmanager update-secret-version-stage \ --remove-from-version-id ``` {{#include ../../../banners/hacktricks-training.md}} + + + + + +### Mass Secret Exfiltration preko BatchGetSecretValue (do 20 po pozivu) + +Iskoristite Secrets Manager BatchGetSecretValue API da preuzmete do 20 secrets u jednom zahtevu. Ovo može dramatično smanjiti broj API poziva u poređenju sa ponavljanjem GetSecretValue za svaki secret. Ako se koriste filteri (tags/name), potrebna je i dozvola ListSecrets. CloudTrail i dalje beleži po jedan GetSecretValue događaj za svaki secret preuzet u batch-u. + +Potrebne dozvole +- 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 sama dozvola `secretsmanager:BatchGetSecretValue` nije dovoljna za preuzimanje secrets — takođe vam je potrebna `secretsmanager:GetSecretValue` za svaki secret koji želite da preuzmete. + +Exfiltrate pomoću eksplicitne liste +```bash +aws secretsmanager batch-get-secret-value \ +--secret-id-list \ +--query 'SecretValues[].{Name:Name,Version:VersionId,Val:SecretString}' +``` +Exfiltrate preko filtera (tag key/value ili prefiks imena) +```bash +# 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 +```bash +# Inspect the Errors list for AccessDenied/NotFound and retry/adjust filters +aws secretsmanager batch-get-secret-value --secret-id-list +``` +Uticaj +- Brzo “smash-and-grab” preuzimanje mnogih tajni uz manje API poziva, što potencijalno zaobilazi alerting podešen na skokove GetSecretValue. +- CloudTrail logovi i dalje uključuju po jedan GetSecretValue događaj za svaku tajnu dohvaćenu u seriji. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md index 4a4ce7143..1a941a030 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md @@ -1,10 +1,8 @@ -# AWS - Secrets Manager Privesc - {{#include ../../../banners/hacktricks-training.md}} ## Secrets Manager -Za više informacija o secrets manager pogledajte: +Za više informacija o Secrets Manager pogledajte: {{#ref}} ../aws-services/aws-secrets-manager-enum.md @@ -12,18 +10,18 @@ Za više informacija o secrets manager pogledajte: ### `secretsmanager:GetSecretValue` -Napadač sa ovom dozvolom može dobiti **sačuvanu vrednost unutar tajne** u AWS **Secretsmanager**. +Napadač sa ovom dozvolom može dobiti **sačuvanu vrednost unutar secret-a** u AWS **Secretsmanager**. ```bash aws secretsmanager get-secret-value --secret-id # Get value ``` -**Potencijalni uticaj:** Pristup visoko osetljivim podacima u AWS Secrets Manager servisu. +**Potencijalni uticaj:** Pristup veoma osetljivim podacima u AWS Secrets Manager servisu. > [!WARNING] -> Imajte na umu da čak i sa `secretsmanager:BatchGetSecretValue` dozvolom, napadač bi takođe trebao `secretsmanager:GetSecretValue` da bi preuzeo osetljive tajne. +> Imajte na umu da, čak i sa `secretsmanager:BatchGetSecretValue` dozvolom, napadač bi takođe trebao `secretsmanager:GetSecretValue` da preuzme osetljive tajne. ### `secretsmanager:GetResourcePolicy`, `secretsmanager:PutResourcePolicy`, (`secretsmanager:ListSecrets`) -Sa prethodnim dozvolama moguće je **dati pristup drugim principalima/nalozima (čak i eksternim)** da pristupe **tajni**. Imajte na umu da da bi **pročitao tajne šifrovane** KMS ključem, korisnik takođe mora imati **pristup KMS ključu** (više informacija na [KMS Enum page](../aws-services/aws-kms-enum.md)). +Sa prethodnim dozvolama moguće je **dodeliti pristup drugim principals/accounts (čak i eksternim)** da pristupe **tajni**. Imajte na umu da, da bi **čitati tajne šifrovane** KMS ključem, korisnik takođe mora imati **pristup KMS ključu** (more info in the [KMS Enum page](../aws-services/aws-kms-enum.md)). ```bash aws secretsmanager list-secrets aws secretsmanager get-resource-policy --secret-id