Az - Azure App Service & Function Apps

Підтримайте HackTricks

Базова інформація про службу додатків

З документації: Azure App Service - це служба на основі HTTP для розміщення веб-додатків, REST API та мобільних бекендів. Ви можете розробляти на вашій улюбленій мові програмування, будь то .NET, .NET Core, Java, Ruby, Node.js, PHP або Python. Додатки запускаються та масштабуються легко як у середовищах на основі Windows, так і на основі Linux.

Кожен додаток працює в межах пісочниці, але ізоляція залежить від планів служби додатків

  • Додатки у безкоштовних та спільних рівнях працюють на спільних віртуальних машинах

  • Додатки у стандартних та преміум рівнях працюють на відведених віртуальних машинах

Зверніть увагу, що жодна з цих ізоляцій не запобігає іншим поширеним вразливостям веб (таким як завантаження файлів або ін'єкції). І якщо використовується ідентифікатор управління, він може мати змогу порушити його дозволи.

Перелік

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

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

Отримання облікових даних та доступ до коду веб-додатка

# 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

Доступ до контейнера Docker з веб-додатком через 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

Основна інформація про функціональні додатки

Azure Functions - це рішення безсерверне, яке дозволяє писати менше коду, підтримувати менше інфраструктури та заощаджувати кошти. Замість турботи про розгортання та підтримку серверів, хмарна інфраструктура надає всі необхідні ресурси для забезпечення безперервної роботи вашого додатка.

У порталі Azure забезпечується інтеграція між Azure Functions та Azure API Management, що дозволяє використовувати кінцеві точки функцій тригера HTTP як REST API. API, які використовуються таким чином, описуються за допомогою визначення OpenAPI, що забезпечує стандартний, мово-незалежний інтерфейс для RESTful API.

Функціональні додатки підтримують керовані ідентифікатори.

Крім того, у функціональному додатку можуть бути певні кінцеві точки, які вимагають певного рівня аутентифікації, такі як "адміністратор" або "анонімний". Атакувальник може спробувати отримати доступ до дозволених анонімних кінцевих точок, щоб обійти обмеження та отримати доступ до конфіденційних даних або функціональності.

Перелік

# Get only Function Apps
Get-AzFunctionApp

Посилання

Підтримайте HackTricks

Last updated