mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/
This commit is contained in:
@@ -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**.
|
||||
|
||||
.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
|
||||
|
||||
+17
-17
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user