Az - Azure App Service & Function Apps

Az - Azure App Service & Function Apps

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge HackTricks AWS)!

Autres façons de soutenir HackTricks :

Informations de base sur le service d'application

À partir de la documentation : Azure App Service est un service basé sur HTTP pour l'hébergement d'applications web, d'API REST et de 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 s'adaptent 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 de service d'application

  • Les applications dans les niveaux Free et Shared 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 les téléversements de fichiers ou les injections). Et si une identité de gestion est utilisée, elle pourrait être en mesure de compromettre ses autorisations.

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

#### Obtenir les identifiants et accéder au code de l'application 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

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 serverless qui vous permet d'écrire moins de code, de maintenir moins d'infrastructure et d'économiser sur les coûts. 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 maintenir vos applications en cours d'exécution.

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, une application de fonction peut avoir certains points de terminaison qui nécessitent un certain niveau d'authentification, tels que "admin" ou "anonyme". Un attaquant pourrait essayer d'accéder aux points de terminaison autorisés en tant qu'anonyme pour contourner les restrictions et accéder à des données ou fonctionnalités sensibles.

Énumération

# Get only Function Apps
Get-AzFunctionApp

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks:

Dernière mise à jour