Az - Azure App Service & Function Apps

Soutenir HackTricks

Informations de base sur App Service

Selon la documentation : Azure App Service est un service basé sur HTTP pour héberger des applications web, des API REST et des back-ends mobiles. Vous pouvez développer dans votre langage préféré, que ce soit .NET, .NET Core, Java, Ruby, Node.js, PHP ou Python. Les applications s'exécutent et se mettent à l'échelle facilement sur des environnements basés sur Windows et Linux.

Chaque application s'exécute dans un bac à sable, mais l'isolation dépend des plans App Service

  • Les applications dans les niveaux Gratuit et Partagé s'exécutent sur des VM partagées

  • Les applications dans les niveaux Standard et Premium s'exécutent sur des VM dédiées

Notez que aucune de ces isolations ne prévient d'autres vulnérabilités web courantes (telles que le téléchargement de fichiers ou les injections). Et si une identité de gestion est utilisée, elle pourrait être capable de compromettre ses permissions.

Énumération

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

Obtenir des identifiants et accéder au code de l'application web

# 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

Accès au conteneur Docker avec l'application 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

Informations de base sur les applications de fonction

Azure Functions est une solution sans serveur qui vous permet d'écrire moins de code, de maintenir moins d'infrastructure et de réaliser des économies. Au lieu de vous soucier du déploiement et de la maintenance des serveurs, l'infrastructure cloud fournit toutes les ressources à jour nécessaires pour faire fonctionner vos applications.

Dans le portail Azure, l'intégration entre Azure Functions et Azure API Management est facilitée, permettant aux points de terminaison de fonction déclenchés par HTTP d'être exposés en tant qu'API REST. Les API exposées de cette manière sont décrites à l'aide d'une définition OpenAPI, fournissant une interface standard et indépendante du langage pour les API RESTful.

Les applications de fonction prennent en charge les identités gérées.

De plus, l'application de fonction peut avoir certains points de terminaison qui nécessitent un certain niveau d'authentification, tel que "admin" ou "anonyme". Un attaquant pourrait essayer d'accéder aux points de terminaison autorisés anonymes pour contourner les restrictions et accéder à des données ou des fonctionnalités sensibles.

Énumération

# Get only Function Apps
Get-AzFunctionApp

Références

Soutenir HackTricks

Last updated