Az - Azure App Service & Function Apps

Az - Serviço de Aplicativos Azure e Funções

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Informações Básicas do Serviço de Aplicativos

Da documentação: Azure App Service é um serviço baseado em HTTP para hospedar aplicativos da web, APIs REST e back-ends móveis. Você pode desenvolver na sua linguagem favorita, seja .NET, .NET Core, Java, Ruby, Node.js, PHP ou Python. As aplicações são executadas e dimensionadas facilmente em ambientes baseados em Windows e Linux.

Cada aplicativo é executado dentro de um sandbox, mas o isolamento depende dos planos do Serviço de Aplicativos

  • Aplicativos nos níveis Free e Shared são executados em VMs compartilhadas

  • Aplicativos nos níveis Standard e Premium são executados em VMs dedicadas

Observe que nenhum desses isolamentos impede outras vulnerabilidades web comuns (como upload de arquivos ou injeções). E se uma identidade de gerenciamento for usada, ela poderá comprometer suas permissões.

Enumeração

# List webapps
az webapp list

## Less information
az webapp list --query "[].{hostName: defaultHostName, state: state, name: name, resourcegroup: resourceGroup}"

# Get access restrictions
az webapp config access-restriction show --resource-group <res-group> -n <name>

# Remove access restrictions
az webapp config access-restriction remove --resource-group <res-group> -n <name> --rule-name <rule-name>

# Get snapshots
az webapp config snapshot list --resource-group <res-group> -n <name>

# Restore snapshot
az webapp config snapshot restore -g <res-group> -n <name> --time 2018-12-11T23:34:16.8388367

# Restart webapp
az webapp restart --name <name> --resource-group <res-group>
# Get App Services and Function Apps
Get-AzWebApp
# Get only App Services
Get-AzWebApp | ?{$_.Kind -notmatch "functionapp"}

```bash #!/bin/bash

Get all App Service and Function Apps

Define Azure subscription ID

azure_subscription="your_subscription_id"

Log in to Azure

az login

Select Azure subscription

az account set --subscription $azure_subscription

Get all App Services in the specified subscription

list_app_services=$(az appservice list --query "[].{appServiceName: name, group: resourceGroup}" -o tsv)

Iterate over each App Service

echo "$list_app_services" | while IFS=$'\t' read -r appServiceName group; do

Get the type of the App Service

service_type=$(az appservice show --name $appServiceName --resource-group $group --query "kind" -o tsv)

Check if it is a Function App and print its name

if [ "$service_type" == "functionapp" ]; then echo "Function App Name: $appServiceName" fi done

#### Obter credenciais e acessar o código do aplicativo da web
```bash
# Get connection strings that could contain credentials (with DBs for example)
az webapp config connection-string list --name <name> --resource-group <res-group>
## Check how to use the DBs connection strings in the SQL page

# Get credentials to access the code and DB credentials if configured.
az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>


# Get git URL to access the code
az webapp deployment source config-local-git --resource-group <res-group> -n <name>

# Access/Modify the code via git
git clone 'https://<username>:<password>@name.scm.azurewebsites.net/repo-name.git'
## In my case the username was: $nameofthewebapp and the password some random chars
## If you change the code and do a push, the app is automatically redeployed

Acesso ao contêiner Docker com o aplicativo da web via ssh:

# Get ssh session
az webapp create-remote-connection --subscription <SUBSCRIPTION-ID> --resource-group <RG-NAME> -n <APP-SERVICE-NAME>

## If successfull you will get a message such as:
#Verifying if app is running....
#App is running. Trying to establish tunnel connection...
#Opening tunnel on port: 39895
#SSH is available { username: root, password: Docker! }

## So from that machine ssh into that port (you might need generate a new ssh session to the jump host)
ssh root@127.0.0.1 -p 39895

Informações Básicas sobre Function Apps

O Azure Functions é uma solução serverless que permite escrever menos código, manter menos infraestrutura e economizar custos. Em vez de se preocupar com a implantação e manutenção de servidores, a infraestrutura de nuvem fornece todos os recursos atualizados necessários para manter suas aplicações em execução.

No portal do Azure, a integração entre o Azure Functions e o Azure API Management é facilitada, permitindo que os pontos de extremidade da função de acionamento HTTP sejam expostos como APIs REST. As APIs expostas dessa maneira são descritas usando uma definição OpenAPI, fornecendo uma interface padrão e independente de linguagem para APIs RESTful.

Os Function Apps suportam Identidades Gerenciadas.

Além disso, o Function App pode ter certos pontos de extremidade que exigem um certo nível de autenticação, como "admin" ou "anônimo". Um atacante poderia tentar acessar os pontos de extremidade permitidos para anônimos para contornar as restrições e obter acesso a dados ou funcionalidades sensíveis.

Enumeração

# Get only Function Apps
Get-AzFunctionApp

Referências

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización