Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-05-09 12:44:04 +00:00
parent ea40108cf7
commit 220574b6bc
2 changed files with 22 additions and 22 deletions
@@ -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 <bucket-n
```
### `s3:GetBucketAcl`, `s3:PutBucketAcl`
Napastnik mógłby nadużyć tych uprawnień, aby **przyznać sobie więcej dostępu** do konkretnych bucketów.\
Napastnik mógłby nadużyć tych uprawnień, aby **przyznać sobie więcej dostępu** do konkretnych koszy.\
Należy zauważyć, że napastnik nie musi pochodzić z tego samego konta. Co więcej, dostęp do zapisu
```bash
# Update bucket ACL
@@ -12,18 +12,18 @@ Aby uzyskać więcej informacji, sprawdź:
### Hybrid Workers Group
- **Z Konta Automatyzacji do VM**
- **Z konta automatyzacji do VM**
Pamiętaj, że jeśli w jakiś sposób atakujący może wykonać dowolny runbook (dowolny kod) w hybrydowym pracowniku, to **przejdzie do lokalizacji VM**. Może to być maszyna lokalna, VPC innej chmury lub nawet VM w Azure.
Pamiętaj, że jeśli w jakiś sposób atakujący może wykonać dowolny runbook (dowolny kod) w hybrydowym pracowniku, to **przejdzie do lokalizacji VM**. Może to być maszyna lokalna, VPC w innej chmurze lub nawet VM w Azure.
Co więcej, jeśli hybrydowy pracownik działa w Azure z innymi przypisanymi tożsamościami zarządzanymi, runbook będzie mógł uzyskać dostęp do **tożsamości zarządzanej runbooka oraz wszystkich tożsamości zarządzanych VM z usługi metadanych**.
Ponadto, jeśli hybrydowy pracownik działa w Azure z innymi przypisanymi tożsamościami zarządzanymi, runbook będzie mógł uzyskać dostęp do **tożsamości zarządzanej runbooka oraz wszystkich tożsamości zarządzanych VM z usługi metadanych**.
> [!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 <res-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