Az - Azure App Service & Function Apps

Support HackTricks

App Service Basic Information

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

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

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

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

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

Enumeration

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

Function Apps Basic Information

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

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

Function Apps підтримують керовані ідентичності.

Більше того, Function App може мати певні кінцеві точки, які вимагають певного рівня аутентифікації, такі як "admin" або "anonymous". Зловмисник може спробувати отримати доступ до анонімно дозволених кінцевих точок, щоб обійти обмеження та отримати доступ до чутливих даних або функціональності.

Enumeration

# Get only Function Apps
Get-AzFunctionApp

References

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

Last updated