diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md index 80ad45159..f55770ac3 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md @@ -6,9 +6,9 @@ ### `s3:PutBucketNotification`, `s3:PutObject`, `s3:GetObject` -Napastnik z tymi uprawnieniami do interesujących bucketów może być w stanie przejąć zasoby i eskalować uprawnienia. +Napastnik z tymi uprawnieniami nad interesującymi bucketami może być w stanie przejąć zasoby i eskalować uprawnienia. -Na przykład, napastnik z tymi **uprawnieniami do bucketu cloudformation** o nazwie "cf-templates-nohnwfax6a6i-us-east-1" będzie w stanie przejąć wdrożenie. Dostęp można przyznać za pomocą następującej polityki: +Na przykład, napastnik z tymi **uprawnieniami nad bucketem cloudformation** o nazwie "cf-templates-nohnwfax6a6i-us-east-1" będzie w stanie przejąć wdrożenie. Dostęp można przyznać za pomocą następującej polityki: ```json { "Version": "2012-10-17", @@ -34,7 +34,7 @@ Na przykład, napastnik z tymi **uprawnieniami do bucketu cloudformation** o naz ] } ``` -I przejęcie jest możliwe, ponieważ istnieje **mały czas na przejęcie od momentu przesłania szablonu** do koszyka do momentu, gdy **szablon jest wdrażany**. Napastnik może po prostu stworzyć **funkcję lambda** w swoim koncie, która **wywoła się, gdy wysłane zostanie powiadomienie z koszyka**, i **przejmie** **zawartość** tego **koszyka**. +I przejęcie jest możliwe, ponieważ istnieje **mały przedział czasowy od momentu przesłania szablonu** do koszyka do momentu, gdy **szablon jest wdrażany**. Napastnik może po prostu stworzyć **funkcję lambda** w swoim koncie, która **wywoła się, gdy zostanie wysłane powiadomienie z koszyka**, i **przejmie** **zawartość** tego **koszyka**. ![](<../../../images/image (174).png>) @@ -57,7 +57,7 @@ Również zazwyczaj, w rzeczywistych kontach prawie zawsze wszyscy deweloperzy m Więc, jeśli masz uprawnienia wymienione nad tymi plikami, istnieje wektor ataku, który pozwala ci uzyskać RCE w pipeline z uprawnieniami `terraform` - najczęściej `AdministratorAccess`, co czyni cię administratorem konta w chmurze. Możesz również użyć tego wektora do przeprowadzenia ataku typu denial of service, powodując, że `terraform` usunie legalne zasoby. -Postępuj zgodnie z opisem w sekcji *Abusing Terraform State Files* na stronie *Terraform Security* w celu uzyskania bezpośrednio używalnego kodu exploita: +Postępuj zgodnie z opisem w sekcji *Abusing Terraform State Files* na stronie *Terraform Security* w celu uzyskania bezpośrednio używalnego kodu exploit: {{#ref}} ../../../pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files @@ -123,7 +123,7 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket [!TIP] > Pamiętaj, że **usługa metadanych** ma inny adres URL (**`http://169.254.169.254`**) niż usługa, z której uzyskuje token tożsamości zarządzanej konta automatyzacji (**`IDENTITY_ENDPOINT`**). -- **Z VM do Konta Automatyzacji** +- **Z VM do konta automatyzacji** -Co więcej, jeśli ktoś skompromituje VM, na którym działa skrypt konta automatyzacji, będzie mógł zlokalizować metadane **Konta Automatyzacji** i uzyskać do nich dostęp z VM, aby uzyskać tokeny dla **Tożsamości Zarządzanych** przypisanych do Konta Automatyzacji. +Ponadto, jeśli ktoś skompromituje VM, na którym działa skrypt konta automatyzacji, będzie mógł zlokalizować metadane **konta automatyzacji** i uzyskać do nich dostęp z VM, aby uzyskać tokeny dla **tożsamości zarządzanych** przypisanych do konta automatyzacji. Jak można zobaczyć na poniższym obrazku, mając dostęp Administratora do VM, można znaleźć w **zmiennych środowiskowych procesu** adres URL i sekret do uzyskania dostępu do usługi metadanych konta automatyzacji: @@ -32,9 +32,9 @@ Jak można zobaczyć na poniższym obrazku, mając dostęp Administratora do VM, ### `Microsoft.Automation/automationAccounts/jobs/write`, `Microsoft.Automation/automationAccounts/runbooks/draft/write`, `Microsoft.Automation/automationAccounts/jobs/output/read`, `Microsoft.Automation/automationAccounts/runbooks/publish/action` (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Automation/automationAccounts/runbooks/write`) -Podsumowując, te uprawnienia pozwalają na **tworzenie, modyfikowanie i uruchamianie Runbooków** w Koncie Automatyzacji, które można wykorzystać do **wykonywania kodu** w kontekście Konta Automatyzacji i eskalacji uprawnień do przypisanych **Tożsamości Zarządzanych** oraz wycieku **poświadczeń** i **zaszyfrowanych zmiennych** przechowywanych w Koncie Automatyzacji. +Podsumowując, te uprawnienia pozwalają na **tworzenie, modyfikowanie i uruchamianie Runbooków** w koncie automatyzacji, które można wykorzystać do **wykonywania kodu** w kontekście konta automatyzacji i eskalacji uprawnień do przypisanych **tożsamości zarządzanych** oraz wycieku **poświadczeń** i **zaszyfrowanych zmiennych** przechowywanych w koncie automatyzacji. -Uprawnienie **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** pozwala na modyfikację kodu Runbooka w Koncie Automatyzacji przy użyciu: +Uprawnienie **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** pozwala na modyfikację kodu Runbooka w koncie automatyzacji przy użyciu: ```bash # Update the runbook content with the provided PowerShell script az automation runbook replace-content --no-wait \ @@ -49,7 +49,7 @@ $creds.GetNetworkCredential().password' ``` Zauważ, jak poprzedni skrypt może być użyty do **wycieku nazwy użytkownika i hasła** poświadczenia oraz wartości **zaszyfrowanej zmiennej** przechowywanej w Koncie Automatyzacji. -Uprawnienie **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** pozwala użytkownikowi na publikację Runbooka w Koncie Automatyzacji, aby zmiany zostały zastosowane: +Uprawnienie **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** pozwala użytkownikowi na publikowanie Runbooka w Koncie Automatyzacji, aby zmiany zostały zastosowane: ```bash az automation runbook publish \ --resource-group \ @@ -192,10 +192,10 @@ az automation source-control create \ ``` To automatycznie zaimportuje runbooki z repozytorium Github do Konta Automatyzacji, a z dodatkowymi uprawnieniami do ich uruchamiania, **możliwe jest eskalowanie uprawnień**. -Ponadto pamiętaj, że aby kontrola źródła działała w Kontach Automatyzacji, musi mieć zarządzaną tożsamość z rolą **`Contributor`**, a jeśli jest to zarządzana tożsamość użytkownika, identyfikator klienta MI musi być określony w zmiennej **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**. +Ponadto pamiętaj, że aby kontrola wersji działała w Kontach Automatyzacji, musi mieć zarządzaną tożsamość z rolą **`Contributor`**, a jeśli jest to zarządzana tożsamość użytkownika, identyfikator klienta MI musi być określony w zmiennej **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**. > [!TIP] -> Zauważ, że nie można zmienić adresu URL repozytorium źródłowego po jego utworzeniu. +> Zauważ, że nie można zmienić adresu URL repozytorium kontroli wersji po jego utworzeniu. ### `Microsoft.Automation/automationAccounts/variables/write` @@ -213,23 +213,23 @@ az rest --method PUT \ } }' ``` -### Custom Runtime Environments +### Niestandardowe Środowiska Uruchomieniowe -Jeśli konto automatyzacji używa niestandardowego środowiska uruchomieniowego, może być możliwe nadpisanie niestandardowego pakietu środowiska złośliwym kodem (takim jak **backdoor**). W ten sposób, za każdym razem, gdy uruchamiany jest runbook korzystający z tego niestandardowego środowiska, a niestandardowy pakiet jest ładowany, złośliwy kod zostanie wykonany. +Jeśli konto automatyzacji korzysta z niestandardowego środowiska uruchomieniowego, może być możliwe nadpisanie niestandardowego pakietu środowiska złośliwym kodem (takim jak **backdoor**). W ten sposób, za każdym razem, gdy uruchamiany jest runbook korzystający z tego niestandardowego środowiska, a niestandardowy pakiet jest ładowany, złośliwy kod zostanie wykonany. -### Compromising State Configuration +### Kompromitacja Konfiguracji Stanu **Sprawdź pełny post w:** [**https://medium.com/cepheisecurity/abusing-azure-dsc-remote-code-execution-and-privilege-escalation-ab8c35dd04fe**](https://medium.com/cepheisecurity/abusing-azure-dsc-remote-code-execution-and-privilege-escalation-ab8c35dd04fe) -- Krok 1 — Utwórz pliki +- Krok 1 — Utwórz Pliki -**Wymagane pliki:** Potrzebne są dwa skrypty PowerShell: +**Wymagane Pliki:** Potrzebne są dwa skrypty PowerShell: 1. `reverse_shell_config.ps1`: Plik Desired State Configuration (DSC), który pobiera i wykonuje ładunek. Można go uzyskać z [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1). 2. `push_reverse_shell_config.ps1`: Skrypt do publikacji konfiguracji na VM, dostępny na [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1). **Dostosowanie:** Zmienne i parametry w tych plikach muszą być dostosowane do specyficznego środowiska użytkownika, w tym nazwy zasobów, ścieżki plików oraz identyfikatory serwera/ładunku. -- Krok 2 — Spakuj plik konfiguracyjny +- Krok 2 — Spakuj Plik Konfiguracji Plik `reverse_shell_config.ps1` jest kompresowany do pliku `.zip`, co czyni go gotowym do transferu do Azure Storage Account. ```bash @@ -253,7 +253,7 @@ Skrypt jest edytowany, aby określić docelową maszynę wirtualną Windows i po Plik konfiguracyjny jest wykonywany, co skutkuje wdrożeniem skryptu odwrotnej powłoki w określonej lokalizacji na maszynie wirtualnej Windows. -- Krok 6 — Hostowanie ładunku i ustawienie nasłuchiwacza +- Krok 6 — Hostowanie ładunku i ustawienie nasłuchu Uruchamiany jest Python SimpleHTTPServer, aby hostować ładunek, wraz z nasłuchiwaczem Netcat do przechwytywania przychodzących połączeń. ```bash