Az - Azure App Service & Function Apps

Support HackTricks

Informações Básicas do App Service

Dos documentos: Azure App Service é um serviço baseado em HTTP para hospedar aplicações 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 rodam e escalam com facilidade em ambientes baseados em Windows e Linux.

Cada aplicativo roda dentro de um sandbox, mas a isolação depende dos planos do App Service

  • Aplicativos nos níveis Free e Shared rodam em VMs compartilhadas

  • Aplicativos nos níveis Standard e Premium rodam em VMs dedicadas

Note que nenhuma dessas isolamentos previne outras vulnerabilidades web comuns (como upload de arquivos ou injeções). E se uma identidade de gerenciamento for usada, ela pode ser capaz de 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>

Obter credenciais e acessar o código da webapp

# 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 a webapp 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

Azure Functions é uma solução sem servidor 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 em nuvem fornece todos os recursos atualizados necessários para manter suas aplicações em funcionamento.

No portal do Azure, a integração entre Azure Functions e Azure API Management é facilitada, permitindo que os endpoints de função com gatilho 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.

Function Apps suportam Identidades Gerenciadas.

Além disso, a Function App pode ter certos endpoints que requerem um certo nível de autenticação, como "admin" ou "anônimo". Um atacante pode tentar acessar os endpoints permitidos 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

Support HackTricks

Last updated