diff --git a/src/SUMMARY.md b/src/SUMMARY.md
index f14f299ff..442c03b1c 100644
--- a/src/SUMMARY.md
+++ b/src/SUMMARY.md
@@ -418,6 +418,7 @@
- [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue-enum.md)
- [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus-enum.md)
- [Az - SQL](pentesting-cloud/azure-security/az-services/az-sql.md)
+ - [Az - Static Web Applications](pentesting-cloud/azure-security/az-services/az-static-web-apps.md)
- [Az - Storage Accounts & Blobs](pentesting-cloud/azure-security/az-services/az-storage.md)
- [Az - Table Storage](pentesting-cloud/azure-security/az-services/az-table-storage.md)
- [Az - Virtual Machines & Network](pentesting-cloud/azure-security/az-services/vms/README.md)
@@ -461,6 +462,7 @@
- [Az - Queue Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md)
- [Az - Service Bus Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md)
- [Az - Virtual Machines & Network Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md)
+ - [Az - Static Web App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md)
- [Az - Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md)
- [Az - SQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md)
- [Az - Persistence](pentesting-cloud/azure-security/az-persistence/README.md)
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 c396a4734..04c7fba59 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
@@ -8,7 +8,7 @@
Napastnik z tymi uprawnieniami do interesujących bucketów 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 mógł przejąć wdrożenie. Dostęp można przyznać za pomocą następującej polityki:
+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:
```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 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 wysłane zostanie powiadomienie o koszyku**, i **przejmie** **zawartość** tego **koszyka**.
+I możliwe jest przejęcie, 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 **przejąć** **zawartość** tego **koszyka**.
.png>)
@@ -43,21 +43,21 @@ Aby uzyskać więcej informacji, sprawdź oryginalne badania: [https://rhinosecu
### `s3:PutObject`, `s3:GetObject`
-To są uprawnienia do **pobierania i przesyłania obiektów do S3**. Kilka usług w AWS (i poza nim) używa przechowywania S3 do przechowywania **plików konfiguracyjnych**.\
-Napastnik z **dostępem do odczytu** do nich może znaleźć **wrażliwe informacje** w nich.\
-Napastnik z **dostępem do zapisu** do nich mógłby **zmodyfikować dane, aby nadużyć jakiejś usługi i spróbować podnieść uprawnienia**.\
+To są uprawnienia do **pobierania i przesyłania obiektów do S3**. Wiele usług w AWS (i poza nim) używa przechowywania S3 do przechowywania **plików konfiguracyjnych**.\
+Napastnik z **dostępem do odczytu** może znaleźć na nich **wrażliwe informacje**.\
+Napastnik z **dostępem do zapisu** może **zmodyfikować dane, aby nadużyć jakiejś usługi i spróbować podnieść uprawnienia**.\
Oto kilka przykładów:
-- Jeśli instancja EC2 przechowuje **dane użytkownika w koszyku S3**, napastnik mógłby je zmodyfikować, aby **wykonać dowolny kod wewnątrz instancji EC2**.
+- Jeśli instancja EC2 przechowuje **dane użytkownika w koszyku S3**, napastnik może je zmodyfikować, aby **wykonać dowolny kod wewnątrz instancji EC2**.
### `s3:PutObject`, `s3:GetObject` (opcjonalnie) nad plikiem stanu terraform
Bardzo często pliki stanu [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) są zapisywane w magazynie blob dostawców chmury, np. AWS S3. Sufiks pliku dla pliku stanu to `.tfstate`, a nazwy koszyków często również wskazują, że zawierają pliki stanu terraform. Zazwyczaj każde konto AWS ma jeden taki koszyk do przechowywania plików stanu, które pokazują stan konta.\
Również zazwyczaj, w rzeczywistych kontach prawie zawsze wszyscy deweloperzy mają `s3:*`, a czasami nawet użytkownicy biznesowi mają `s3:Put*`.
-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.
+Więc, jeśli masz uprawnienia wymienione nad tymi plikami, istnieje wektor ataku, który pozwala na uzyskanie 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 exploit:
+Postępuj zgodnie z opisem w sekcji *Nadużywanie plików stanu Terraform* na stronie *Bezpieczeństwo Terraform* w celu uzyskania bezpośrednio używalnego kodu exploita:
{{#ref}}
pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files
@@ -65,7 +65,7 @@ pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files
### `s3:PutBucketPolicy`
-Napastnik, który musi być **z tego samego konta**, w przeciwnym razie wystąpi błąd `The specified method is not allowed`, z tym uprawnieniem będzie mógł przyznać sobie więcej uprawnień do koszyka(ów), co pozwoli mu na odczyt, zapis, modyfikację, usunięcie i ujawnienie koszyków.
+Napastnik, który musi być **z tego samego konta**, w przeciwnym razie wystąpi błąd `The specified method is not allowed`, z tym uprawnieniem będzie mógł przyznać sobie więcej uprawnień nad koszykiem (koszykami), co pozwoli mu na odczyt, zapis, modyfikację, usunięcie i ujawnienie koszyków.
```bash
# Update Bucket policy
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket
@@ -124,7 +124,7 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md
index d8c3ef404..fe95852f5 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md
@@ -124,14 +124,14 @@ az webapp deployment user set \
--user-name hacktricks \
--password 'W34kP@ssw0rd123!'
```
-Następnie możesz użyć tych danych uwierzytelniających do **uzyskania dostępu do platform SCM i FTP**. To również świetny sposób na utrzymanie trwałości.
+Następnie możesz użyć tych poświadczeń do **uzyskania dostępu do platform SCM i FTP**. To również świetny sposób na utrzymanie trwałości.
Pamiętaj, że aby uzyskać dostęp do platformy SCM z **sieci, musisz uzyskać dostęp do `/BasicAuth`**.
> [!WARNING]
-> Zauważ, że każdy użytkownik może skonfigurować swoje własne dane uwierzytelniające, wywołując poprzednie polecenie, ale jeśli użytkownik nie ma wystarczających uprawnień do uzyskania dostępu do SCM lub FTP, dane uwierzytelniające nie będą działać.
+> Zauważ, że każdy użytkownik może skonfigurować swoje własne poświadczenia, wywołując poprzednie polecenie, ale jeśli użytkownik nie ma wystarczających uprawnień do uzyskania dostępu do SCM lub FTP, poświadczenia nie będą działać.
-- Jeśli widzisz, że te dane uwierzytelniające są **REDACTED**, to dlatego, że **musisz włączyć opcję podstawowej autoryzacji SCM** i do tego potrzebujesz drugiego uprawnienia (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`):
+- Jeśli widzisz, że te poświadczenia są **REDACTED**, to dlatego, że **musisz włączyć opcję podstawowej autoryzacji SCM** i do tego potrzebujesz drugiego uprawnienia (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`):
```bash
# Enable basic authentication for SCM
az rest --method PUT \
@@ -205,7 +205,7 @@ curl -X PUT \
```
### Microsoft.Web/sites/write, Microsoft.Web/sites/read, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
-Te uprawnienia pozwalają na **przypisanie zarządzanej tożsamości** do usługi App, więc jeśli usługa App została wcześniej skompromitowana, to pozwoli to atakującemu na przypisanie nowych zarządzanych tożsamości do usługi App i **eskalację uprawnień** do nich.
+Te uprawnienia pozwalają na **przypisanie zarządzanej tożsamości** do usługi App, więc jeśli usługa App była wcześniej skompromitowana, to pozwoli to atakującemu na przypisanie nowych zarządzanych tożsamości do usługi App i **eskalację uprawnień** do nich.
```bash
az webapp identity assign --name --resource-group --identities /subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/
```
diff --git a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md
index b66723180..e83bbc223 100644
--- a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md
+++ b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md
@@ -14,12 +14,12 @@
- **Plan Flex Consumption**: Oferuje **dynamiczne, oparte na zdarzeniach skalowanie** z ceną płatności za użycie, dodając lub usuwając instancje funkcji w zależności od popytu. Obsługuje **wirtualne sieci** i **wstępnie przydzielone instancje**, aby zredukować zimne uruchomienia, co czyni go odpowiednim dla **zmiennych obciążeń**, które nie wymagają wsparcia kontenerów.
- **Plan Traditional Consumption**: Domyślna opcja bezserwerowa, w której **płacisz tylko za zasoby obliczeniowe, gdy funkcje są uruchamiane**. Automatycznie skaluje się w zależności od nadchodzących zdarzeń i zawiera **optymalizacje zimnego uruchomienia**, ale nie obsługuje wdrożeń kontenerów. Idealny dla **przerywanych obciążeń** wymagających automatycznego skalowania.
- **Plan Premium**: Zaprojektowany dla **spójnej wydajności**, z **wstępnie podgrzanymi pracownikami**, aby wyeliminować zimne uruchomienia. Oferuje **wydłużone czasy wykonania, wirtualne sieci** i obsługuje **niestandardowe obrazy Linux**, co czyni go idealnym dla **aplikacji krytycznych dla misji**, które potrzebują wysokiej wydajności i zaawansowanych funkcji.
-- **Plan Dedicated**: Działa na dedykowanych maszynach wirtualnych z **przewidywalnym rozliczeniem** i obsługuje ręczne lub automatyczne skalowanie. Umożliwia uruchamianie wielu aplikacji w tym samym planie, zapewnia **izolację obliczeniową** i zapewnia **bezpieczny dostęp do sieci** za pośrednictwem Środowisk Usług Aplikacji, co czyni go idealnym dla **aplikacji długoterminowych** wymagających spójnej alokacji zasobów.
-- **Container Apps**: Umożliwia wdrażanie **kontenerowych aplikacji funkcji** w zarządzanym środowisku, obok mikroserwisów i interfejsów API. Obsługuje niestandardowe biblioteki, migrację aplikacji dziedzicznych i **przetwarzanie GPU**, eliminując zarządzanie klastrami Kubernetes. Idealny dla **aplikacji kontenerowych opartych na zdarzeniach i skalowalnych**.
+- **Plan Dedicated**: Działa na dedykowanych maszynach wirtualnych z **przewidywalnym rozliczeniem** i obsługuje ręczne lub automatyczne skalowanie. Umożliwia uruchamianie wielu aplikacji w tym samym planie, zapewnia **izolację obliczeniową** i zapewnia **bezpieczny dostęp do sieci** za pośrednictwem środowisk App Service, co czyni go idealnym dla **aplikacji długoterminowych** wymagających spójnej alokacji zasobów.
+- **Container Apps**: Umożliwia wdrażanie **kontenerowych aplikacji funkcji** w zarządzanym środowisku, obok mikroserwisów i interfejsów API. Obsługuje niestandardowe biblioteki, migrację aplikacji dziedzicznych i **przetwarzanie GPU**, eliminując zarządzanie klastrami Kubernetes. Idealny dla **opartych na zdarzeniach, skalowalnych aplikacji kontenerowych**.
### **Koszyki pamięci**
-Podczas tworzenia nowej aplikacji funkcji, która nie jest kontenerowa (ale przekazuje kod do uruchomienia), **kod i inne dane związane z funkcją będą przechowywane w koncie pamięci**. Domyślnie konsola internetowa utworzy nową dla każdej funkcji, aby przechować kod.
+Podczas tworzenia nowej aplikacji funkcji, która nie jest kontenerowa (ale dostarcza kod do uruchomienia), **kod i inne dane związane z funkcją będą przechowywane w koncie pamięci**. Domyślnie konsola internetowa utworzy nową dla każdej funkcji, aby przechować kod.
Co więcej, modyfikując kod wewnątrz koszyka (w różnych formatach, w jakich może być przechowywany), **kod aplikacji zostanie zmodyfikowany na nowy i wykonany** następnym razem, gdy funkcja zostanie wywołana.
@@ -30,9 +30,9 @@ Co więcej, modyfikując kod wewnątrz koszyka (w różnych formatach, w jakich
Możliwe jest również znalezienie **kluczy głównych i funkcji** przechowywanych w koncie pamięci w kontenerze **`azure-webjobs-secrets`** wewnątrz folderu **``** w plikach JSON, które można tam znaleźć.
-Zauważ, że Funkcje pozwalają również na przechowywanie kodu w zdalnej lokalizacji, wskazując po prostu URL do niego.
+Zauważ, że Funkcje pozwalają również na przechowywanie kodu w zdalnej lokalizacji, wskazując po prostu adres URL do niej.
-### Sieciowanie
+### Sieci
Używając wyzwalacza HTTP:
@@ -44,71 +44,7 @@ Używając wyzwalacza HTTP:
### **Ustawienia aplikacji funkcji i zmienne środowiskowe**
-Możliwe jest skonfigurowanie zmiennych środowiskowych wewnątrz aplikacji, które mogą zawierać wrażliwe informacje. Co więcej, domyślnie zmienne env **`AzureWebJobsStorage`** i **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (wśród innych) są tworzone. Te są szczególnie interesujące, ponieważ **zawierają klucz konta do kontrolowania z PEŁNYMI uprawnieniami konta pamięci zawierającego dane aplikacji**. Te ustawienia są również potrzebne do wykonania kodu z konta pamięci.
-
-Te zmienne env lub parametry konfiguracyjne kontrolują również, jak funkcja wykonuje kod, na przykład jeśli **`WEBSITE_RUN_FROM_PACKAGE`** istnieje, wskaże URL, gdzie znajduje się kod aplikacji.
-
-### **Piaskownica funkcji**
-
-Wewnątrz piaskownicy linux kod źródłowy znajduje się w **`/home/site/wwwroot`** w pliku **`function_app.py`** (jeśli używany jest python), użytkownik uruchamiający kod to **`app`** (bez uprawnień sudo).
-
-W **funkcji Windows** używającej NodeJS kod znajdował się w **`C:\home\site\wwwroot\HttpTrigger1\index.js`**, nazwa użytkownika to **`mawsFnPlaceholder8_f_v4_node_20_x86`** i był częścią **grup**: `Mandatory Label\High Mandatory Level Label`, `Everyone`, `BUILTIN\Users`, `NT AUTHORITY\INTERACTIVE`, `CONSOLE LOGON`, `NT AUTHORITY\Authenticated Users`, `NT AUTHORITY\This Organization`, `BUILTIN\IIS_IUSRS`, `LOCAL`, `10-30-4-99\Dwas Site Users`.
-
-### **Zarządzane tożsamości i metadane**
-
-Podobnie jak [**VMs**](vms/index.html), Funkcje mogą mieć **Zarządzane Tożsamości** dwóch typów: przypisane systemowo i przypisane przez użytkownika.
-
-**Zarządzana tożsamość przypisana systemowo** będzie to zarządzana tożsamość, którą **tylko funkcja**, która ją ma przypisaną, będzie mogła używać, podczas gdy **zarządzane tożsamości przypisane przez użytkownika** to zarządzane tożsamości, które **każda inna usługa Azure będzie mogła używać**.
-
-> [!NOTE]
-> Podobnie jak w [**VMs**](vms/index.html), Funkcje mogą mieć **1 zarządzaną tożsamość przypisaną systemowo** i **wiele przypisanych przez użytkownika**, więc zawsze ważne jest, aby spróbować znaleźć wszystkie z nich, jeśli skompromitujesz funkcję, ponieważ możesz być w stanie eskalować uprawnienia do kilku zarządzanych tożsamości z jednej funkcji.
->
-> Jeśli nie jest używana zarządzana tożsamość systemowa, ale jedna lub więcej zarządzanych tożsamości użytkownika są przypisane do funkcji, domyślnie nie będziesz w stanie uzyskać żadnego tokena.
-
-Możliwe jest użycie [**skryptów PEASS**](https://github.com/peass-ng/PEASS-ng) do uzyskania tokenów z domyślnej zarządzanej tożsamości z punktu końcowego metadanych. Lub możesz je uzyskać **ręcznie**, jak wyjaśniono w:
-
-{% embed url="https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm" %}
-
-Zauważ, że musisz znaleźć sposób na **sprawdzenie wszystkich zarządzanych tożsamości, które funkcja ma przypisane**, ponieważ jeśli tego nie wskażesz, punkt końcowy metadanych **użyje tylko domyślnej** (sprawdź poprzedni link, aby uzyskać więcej informacji).
-
-## Klucze dostępu
-
-> [!NOTE]
-> Zauważ, że nie ma uprawnień RBAC do udzielania użytkownikom dostępu do wywoływania funkcji. **Wywołanie funkcji zależy od wyzwalacza** wybranego podczas jej tworzenia, a jeśli wybrano wyzwalacz HTTP, może być konieczne użycie **klucza dostępu**.
-
-Podczas tworzenia punktu końcowego wewnątrz funkcji za pomocą **wyzwalacza HTTP** możliwe jest wskazanie **poziomu autoryzacji klucza dostępu** potrzebnego do wywołania funkcji. Dostępne są trzy opcje:
-
-- **ANONYMOUS**: **Każdy** może uzyskać dostęp do funkcji przez URL.
-- **FUNCTION**: Punkt końcowy jest dostępny tylko dla użytkowników korzystających z **klucza funkcji, hosta lub klucza głównego**.
-- **ADMIN**: Punkt końcowy jest dostępny tylko dla użytkowników z **kluczem głównym**.
-
-**Rodzaje kluczy:**
-
-- **Klucze funkcji:** Klucze funkcji mogą być domyślne lub zdefiniowane przez użytkownika i są zaprojektowane w celu przyznania dostępu wyłącznie do **konkretnych punktów końcowych funkcji** w aplikacji funkcji, co pozwala na bardziej szczegółowy dostęp do punktów końcowych.
-- **Klucze hosta:** Klucze hosta, które mogą być również domyślne lub zdefiniowane przez użytkownika, zapewniają dostęp do **wszystkich punktów końcowych funkcji w aplikacji funkcji z poziomem dostępu FUNCTION**.
-- **Klucz główny:** Klucz główny (`_master`) służy jako klucz administracyjny, który oferuje podwyższone uprawnienia, w tym dostęp do wszystkich punktów końcowych funkcji (w tym poziom ADMIN). Ten **klucz nie może być cofnięty.**
-- **Klucze systemowe:** Klucze systemowe są **zarządzane przez konkretne rozszerzenia** i są wymagane do uzyskania dostępu do punktów końcowych webhooków używanych przez wewnętrzne komponenty. Przykłady obejmują wyzwalacz Event Grid i Durable Functions, które wykorzystują klucze systemowe do bezpiecznej interakcji z ich odpowiednimi interfejsami API.
-
-> [!TIP]
-> Przykład dostępu do punktu końcowego API funkcji za pomocą klucza:
->
-> `https://.azurewebsites.net/api/?code=`
-
-### Podstawowa autoryzacja
-
-Podobnie jak w Usługach Aplikacji, Funkcje również obsługują podstawową autoryzację do łączenia się z **SCM** i **FTP** w celu wdrożenia kodu za pomocą **nazwa użytkownika i hasło w URL** dostarczonym przez Azure. Więcej informacji na ten temat w:
-
-{{#ref}}
-az-app-services.md
-{{#endref}}
-
-### Wdrożenia oparte na Githubie
-
-Gdy funkcja jest generowana z repozytorium Github, konsola internetowa Azure pozwala na **automatyczne utworzenie Workflow Github w określonym repozytorium**, więc za każdym razem, gdy to repozytorium jest aktualizowane, kod funkcji jest aktualizowany. W rzeczywistości YAML akcji Github dla funkcji w Pythonie wygląda tak:
-
-
-
-Github Action Yaml
+Możliwe jest skonfigurowanie zmiennych środowiskowych wewnątrz aplikacji, które mogą zawierać wrażliwe informacje. Co więcej, domyślnie zmienne środowiskowe **`AzureWebJobsStorage`** i **`WEBSITE_CONTENTAZUREFILECONNECTION
```yaml
# Docs for the Azure Web Apps Deploy action: https://github.com/azure/functions-action
# More GitHub Actions for Azure: https://github.com/Azure/actions