mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 11:26:11 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-static-w
This commit is contained in:
@@ -2,23 +2,27 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Informações Básicas sobre Aplicativos Web Estáticos
|
||||
## Informações Básicas sobre Static Web Apps
|
||||
|
||||
Azure Static Web Apps é um serviço de nuvem para hospedar **aplicativos web estáticos com CI/CD automático de repositórios como GitHub**. Ele oferece entrega de conteúdo global, backends sem servidor e HTTPS integrado, tornando-o seguro e escalável. No entanto, os riscos incluem CORS mal configurado, autenticação insuficiente e manipulação de conteúdo, que podem expor aplicativos a ataques como XSS e vazamento de dados se não forem gerenciados adequadamente.
|
||||
Azure Static Web Apps é um serviço de nuvem para hospedagem de **aplicativos web estáticos com CI/CD automático de repositórios como GitHub**. Ele oferece entrega de conteúdo global, backends sem servidor e HTTPS integrado, tornando-o seguro e escalável. No entanto, mesmo que o serviço seja chamado de "estático", isso não significa que seja completamente seguro. Os riscos incluem CORS mal configurado, autenticação insuficiente e manipulação de conteúdo, que podem expor aplicativos a ataques como XSS e vazamento de dados se não forem gerenciados adequadamente.
|
||||
|
||||
### Autenticação de Implantação
|
||||
|
||||
> [!TIP]
|
||||
> Quando um Aplicativo Estático é criado, você pode escolher a **política de autorização de implantação** entre **Token de implantação** e **fluxo de trabalho do GitHub Actions**.
|
||||
> Quando um Static App é criado, você pode escolher a **política de autorização de implantação** entre **Token de implantação** e **fluxo de trabalho do GitHub Actions**.
|
||||
|
||||
- **Token de implantação**: Um token é gerado e usado para autenticar o processo de implantação. Qualquer pessoa com **este token é suficiente para implantar uma nova versão do aplicativo**. Uma **Ação do Github é implantada automaticamente** no repositório com o token em um segredo para implantar uma nova versão do aplicativo toda vez que o repositório é atualizado.
|
||||
- **Fluxo de trabalho do GitHub Actions**: Neste caso, uma Ação do Github muito semelhante também é implantada no repositório e o **token também é armazenado em um segredo**. No entanto, esta Ação do Github tem uma diferença, ela usa a **`actions/github-script@v6`** para obter o IDToken do repositório e usá-lo para implantar o aplicativo.
|
||||
- Mesmo que em ambos os casos a ação **`Azure/static-web-apps-deploy@v1`** seja usada com um token no parâmetro `azure_static_web_apps_api_token`, neste segundo caso, um token aleatório com um formato válido como `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` é suficiente para implantar o aplicativo, pois a autorização é feita com o IDToken no parâmetro `github_id_token`.
|
||||
|
||||
### Autenticação de Aplicativos Web
|
||||
### Autenticação Básica de Web App
|
||||
|
||||
É possível **configurar uma senha** para acessar o Aplicativo Web. O console da web permite configurá-la para proteger apenas ambientes de staging ou tanto o staging quanto o de produção.
|
||||
É possível **configurar uma senha** para acessar o Web App. O console web permite configurá-la para proteger apenas ambientes de staging ou tanto o staging quanto o de produção.
|
||||
|
||||
É assim que, no momento da escrita, um aplicativo web protegido por senha se parece:
|
||||
|
||||
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
||||
É possível ver **se alguma senha está sendo usada** e quais ambientes estão protegidos com:
|
||||
```bash
|
||||
az rest --method GET \
|
||||
@@ -26,9 +30,9 @@ az rest --method GET \
|
||||
```
|
||||
No entanto, isso **não mostrará a senha em texto claro**, apenas algo como: `"password": "**********************"`.
|
||||
|
||||
### Rotas
|
||||
### Rotas e Funções
|
||||
|
||||
As rotas definem **como as solicitações HTTP recebidas são tratadas** dentro de um aplicativo web estático. Configuradas no arquivo **`staticwebapp.config.json`**, elas controlam reescrita de URL, redirecionamentos, restrições de acesso e autorização baseada em função, garantindo o manuseio adequado de recursos e segurança.
|
||||
As rotas definem **como as solicitações HTTP recebidas são tratadas** dentro de um aplicativo web estático. Configuradas no arquivo **`staticwebapp.config.json`**, elas controlam reescrita de URL, redirecionamentos, restrições de acesso e autorização baseada em funções, garantindo o manuseio adequado de recursos e segurança.
|
||||
|
||||
Alguns exemplos:
|
||||
```json
|
||||
@@ -58,7 +62,20 @@ Alguns exemplos:
|
||||
}
|
||||
}
|
||||
```
|
||||
## Enumeração
|
||||
Note como é possível **proteger um caminho com um papel**, então, os usuários precisarão se autenticar no aplicativo e receber esse papel para acessar o caminho. Também é possível **criar convites** concedendo papéis específicos a usuários específicos que fazem login via EntraID, Facebook, GitHub, Google, Twitter, o que pode ser útil para escalar privilégios dentro do aplicativo.
|
||||
|
||||
> [!TIP]
|
||||
> Note que é possível configurar o App para que **alterações no arquivo `staticwebapp.config.json`** não sejam aceitas. Nesse caso, pode não ser suficiente apenas alterar o arquivo do Github, mas também **mudar a configuração no App**.
|
||||
|
||||
A URL de staging tem este formato: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` como: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net`
|
||||
|
||||
### Managed Identities
|
||||
|
||||
Azure Static Web Apps pode ser configurado para usar **managed identities**, no entanto, como mencionado nesta [FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-), elas são suportadas apenas para **extrair segredos do Azure Key Vault para fins de autenticação, não para acessar outros recursos do Azure**.
|
||||
|
||||
Para mais informações, você pode encontrar um guia do Azure sobre como usar um segredo de cofre em um aplicativo estático em 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>
|
||||
```
|
||||
## Exemplos para gerar Aplicativos Web
|
||||
|
||||
@@ -95,10 +115,12 @@ Você pode encontrar um bom exemplo para gerar um aplicativo web no seguinte lin
|
||||
2. No portal do Azure, crie um Static Web App configurando o acesso ao Github e selecionando o novo repositório que você forkou anteriormente
|
||||
3. Crie-o, aguarde alguns minutos e verifique sua nova página!
|
||||
|
||||
## Pós Exploração
|
||||
## Escalação de Privilégios e Pós Exploração
|
||||
|
||||
Todas as informações sobre escalação de privilégios e pós exploração em Azure Static Web Apps podem ser encontradas no seguinte link:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-static-web-apps-post-exploitation.md
|
||||
../az-privilege-escalation/az-static-web-apps-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Referências
|
||||
|
||||
Reference in New Issue
Block a user