mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 03:16:37 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-static-w
This commit is contained in:
@@ -4,29 +4,33 @@
|
||||
|
||||
## Podstawowe informacje o statycznych aplikacjach internetowych
|
||||
|
||||
Azure Static Web Apps to usługa chmurowa do hostowania **statycznych aplikacji internetowych z automatycznym CI/CD z repozytoriów takich jak GitHub**. Oferuje globalną dostawę treści, bezserwerowe zaplecza i wbudowane HTTPS, co czyni ją bezpieczną i skalowalną. Jednakże, ryzyka obejmują źle skonfigurowany CORS, niewystarczającą autoryzację i manipulację treścią, co może narażać aplikacje na ataki takie jak XSS i wyciek danych, jeśli nie są odpowiednio zarządzane.
|
||||
Azure Static Web Apps to usługa chmurowa do hostowania **statycznych aplikacji internetowych z automatycznym CI/CD z repozytoriów takich jak GitHub**. Oferuje globalną dostawę treści, bezserwerowe zaplecza i wbudowane HTTPS, co czyni ją bezpieczną i skalowalną. Jednak nawet jeśli usługa nazywa się "statyczna", nie oznacza to, że jest całkowicie bezpieczna. Ryzyka obejmują źle skonfigurowany CORS, niewystarczającą autoryzację i manipulację treścią, co może narażać aplikacje na ataki takie jak XSS i wyciek danych, jeśli nie są odpowiednio zarządzane.
|
||||
|
||||
### Autoryzacja wdrożenia
|
||||
|
||||
> [!TIP]
|
||||
> Gdy tworzona jest aplikacja statyczna, można wybrać **politykę autoryzacji wdrożenia** pomiędzy **tokenem wdrożenia** a **workflow GitHub Actions**.
|
||||
> Gdy tworzona jest aplikacja statyczna, możesz wybrać **politykę autoryzacji wdrożenia** pomiędzy **tokenem wdrożenia** a **workflow GitHub Actions**.
|
||||
|
||||
- **Token wdrożenia**: Generowany jest token, który służy do autoryzacji procesu wdrożenia. Każdy, kto ma **ten token, wystarczy, aby wdrożyć nową wersję aplikacji**. **Github Action jest automatycznie wdrażany** w repozytorium z tokenem w sekrecie, aby wdrożyć nową wersję aplikacji za każdym razem, gdy repozytorium jest aktualizowane.
|
||||
- **Workflow GitHub Actions**: W tym przypadku bardzo podobna akcja GitHub jest również wdrażana w repozytorium, a **token jest również przechowywany w sekrecie**. Jednak ta akcja GitHub ma różnicę, używa **`actions/github-script@v6`** do uzyskania IDToken repozytorium i używa go do wdrożenia aplikacji.
|
||||
- Nawet jeśli w obu przypadkach używana jest akcja **`Azure/static-web-apps-deploy@v1`** z tokenem w parametrze `azure_static_web_apps_api_token`, w tym drugim przypadku losowy token o formacie ważnym jak `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` jest wystarczający do wdrożenia aplikacji, ponieważ autoryzacja odbywa się za pomocą IDToken w parametrze `github_id_token`.
|
||||
|
||||
### Autoryzacja aplikacji internetowej
|
||||
### Podstawowa autoryzacja aplikacji internetowej
|
||||
|
||||
Możliwe jest **skonfigurowanie hasła** do uzyskania dostępu do aplikacji internetowej. Konsola internetowa pozwala na skonfigurowanie go w celu ochrony tylko środowisk stagingowych lub zarówno stagingowych, jak i produkcyjnych.
|
||||
Możliwe jest **skonfigurowanie hasła** do uzyskania dostępu do aplikacji internetowej. Konsola internetowa pozwala na skonfigurowanie jej w celu ochrony tylko środowisk stagingowych lub zarówno stagingowych, jak i produkcyjnych.
|
||||
|
||||
Tak wygląda aplikacja internetowa chroniona hasłem w momencie pisania:
|
||||
|
||||
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
||||
Możliwe jest sprawdzenie **czy jakiekolwiek hasło jest używane** i które środowiska są chronione za pomocą:
|
||||
Możliwe jest zobaczenie **czy jakiekolwiek hasło jest używane** i które środowiska są chronione za pomocą:
|
||||
```bash
|
||||
az rest --method GET \
|
||||
--url "/subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.Web/staticSites/<app-name>/config/basicAuth?api-version=2024-04-01"
|
||||
```
|
||||
Jednak to **nie pokaże hasła w postaci czystego tekstu**, tylko coś takiego: `"password": "**********************"`.
|
||||
|
||||
### Trasy
|
||||
### Trasy i Role
|
||||
|
||||
Trasy definiują **jak obsługiwane są przychodzące żądania HTTP** w ramach statycznej aplikacji webowej. Skonfigurowane w pliku **`staticwebapp.config.json`**, kontrolują przepisywanie URL, przekierowania, ograniczenia dostępu oraz autoryzację opartą na rolach, zapewniając odpowiednie zarządzanie zasobami i bezpieczeństwo.
|
||||
|
||||
@@ -58,7 +62,20 @@ Kilka przykładów:
|
||||
}
|
||||
}
|
||||
```
|
||||
## Enumeracja
|
||||
Zauważ, że możliwe jest **ochronienie ścieżki za pomocą roli**, wtedy użytkownicy będą musieli uwierzytelnić się w aplikacji i otrzymać tę rolę, aby uzyskać dostęp do ścieżki. Możliwe jest również **tworzenie zaproszeń**, przyznających określone role konkretnym użytkownikom logującym się przez EntraID, Facebook, GitHub, Google, Twitter, co może być przydatne do eskalacji uprawnień w aplikacji.
|
||||
|
||||
> [!TIP]
|
||||
> Zauważ, że możliwe jest skonfigurowanie aplikacji tak, aby **zmiany w pliku `staticwebapp.config.json`** nie były akceptowane. W takim przypadku może nie wystarczyć tylko zmiana pliku z Githuba, ale także **zmiana ustawienia w aplikacji**.
|
||||
|
||||
Adres URL staging ma ten format: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` jak: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net`
|
||||
|
||||
### Managed Identities
|
||||
|
||||
Azure Static Web Apps mogą być skonfigurowane do używania **managed identities**, jednak, jak wspomniano w [tym FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-), są one wspierane tylko do **wyciągania sekretów z Azure Key Vault w celach uwierzytelniania, a nie do uzyskiwania dostępu do innych zasobów Azure**.
|
||||
|
||||
Aby uzyskać więcej informacji, możesz znaleźć przewodnik Azure dotyczący używania sekretu z vault w aplikacji statycznej w https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets.
|
||||
|
||||
## Enumeration
|
||||
```bash
|
||||
# List Static Webapps
|
||||
az staticwebapp list --output table
|
||||
@@ -86,6 +103,9 @@ az rest --method GET \
|
||||
## Once you have the database connection name ("default" by default) you can get the connection string with the credentials
|
||||
az rest --method POST \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/databaseConnections/default/show?api-version=2021-03-01"
|
||||
|
||||
# Check connected backends
|
||||
az staticwebapp backends show --name <name> --resource-group <res-group>
|
||||
```
|
||||
## Przykłady generowania aplikacji internetowych
|
||||
|
||||
@@ -95,13 +115,15 @@ Możesz znaleźć ładny przykład generowania aplikacji internetowej pod nastę
|
||||
2. W portalu Azure utwórz Static Web App, konfigurując dostęp do GitHub i wybierając wcześniej forkowane nowe repozytorium
|
||||
3. Utwórz je, poczekaj kilka minut i sprawdź swoją nową stronę!
|
||||
|
||||
## Post Exploitation
|
||||
## Eskalacja uprawnień i post eksploitacja
|
||||
|
||||
Wszystkie informacje na temat eskalacji uprawnień i post eksploitacji w Azure Static Web Apps można znaleźć pod następującym linkiem:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-static-web-apps-post-exploitation.md
|
||||
../az-privilege-escalation/az-static-web-apps-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Referencje
|
||||
## Odniesienia
|
||||
|
||||
- [https://learn.microsoft.com/en-in/azure/app-service/overview](https://learn.microsoft.com/en-in/azure/app-service/overview)
|
||||
- [https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans](https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans)
|
||||
|
||||
Reference in New Issue
Block a user