Iz dokumenata:Azure App Service je HTTP-bazirana usluga za hostovanje web aplikacija, REST API-ja i mobilnih backend-a. Možete razvijati u svom omiljenom jeziku, bilo da je to .NET, .NET Core, Java, Ruby, Node.js, PHP ili Python. Aplikacije se lako pokreću i skaliraju na Windows i Linux okruženjima.
Svaka aplikacija se pokreće unutar sandbox-a, ali izolacija zavisi od App Service planova
Aplikacije u Free i Shared nivoima rade na deljenim VM-ovima
Aplikacije u Standard i Premium nivoima rade na posvećenim VM-ovima
Imajte na umu da nijedna od tih izolacija ne sprečava druge uobičajene web ranjivosti (kao što su upload fajlova ili injekcije). I ako se koristi identitet za upravljanje, mogao bi da kompromituje svoja ovlašćenja.
Enumeracija
# List webappsazwebapplist## Less informationazwebapplist--query"[].{hostName: defaultHostName, state: state, name: name, resourcegroup: resourceGroup}"# Get access restrictionsazwebappconfigaccess-restrictionshow--resource-group<res-group>-n<name># Remove access restrictionsazwebappconfigaccess-restrictionremove--resource-group<res-group>-n<name>--rule-name<rule-name># Get snapshotsazwebappconfigsnapshotlist--resource-group<res-group>-n<name># Restore snapshotazwebappconfigsnapshotrestore-g<res-group>-n<name>--time2018-12-11T23:34:16.8388367# Restart webappazwebapprestart--name<name>--resource-group<res-group>
# Get App Services and Function AppsGet-AzWebApp# Get only App ServicesGet-AzWebApp|?{$_.Kind-notmatch"functionapp"}
#!/bin/bash# Get all App Service and Function Apps# Define Azure subscription IDazure_subscription="your_subscription_id"# Log in to Azureazlogin# Select Azure subscriptionazaccountset--subscription $azure_subscription# Get all App Services in the specified subscriptionlist_app_services=$(azappservicelist--query"[].{appServiceName: name, group: resourceGroup}"-otsv)# Iterate over each App Serviceecho"$list_app_services"|while IFS=$'\t'read-rappServiceNamegroup; do# Get the type of the App Serviceservice_type=$(azappserviceshow--name $appServiceName --resource-group $group --query"kind"-otsv)# Check if it is a Function App and print its nameif [ "$service_type"=="functionapp" ]; thenecho"Function App Name: $appServiceName"fidone
Dobijanje akreditiva i pristup kodu web aplikacije
# Get connection strings that could contain credentials (with DBs for example)azwebappconfigconnection-stringlist--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.azwebappdeploymentlist-publishing-profiles--resource-group<res-group>-n<name># Get git URL to access the codeazwebappdeploymentsourceconfig-local-git--resource-group<res-group>-n<name># Access/Modify the code via gitgitclone'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
Pristup Docker kontejneru sa webaplikacijom putem ssh:
# Get ssh sessionazwebappcreate-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)sshroot@127.0.0.1-p39895
Основне информације о Функционалним Апликацијама
Azure Functions је serverless решење које вам омогућава да пишете мање кода, одржавате мање инфраструктуре и уштедите на трошковима. Уместо да бринете о распоређивању и одржавању сервера, облачна инфраструктура пружа све актуелне ресурсе потребне за одржавање ваших апликација.
У Azure порталу, интеграција између Azure Functions и Azure API Management је олакшана, омогућавајући HTTP триггер функцијске крајње тачке да буду изложене као REST API. API-ји изложени на овај начин описани су помоћу OpenAPI дефиниције, пружајући стандардни, језички независни интерфејс за RESTful API.
Штавише, Функционална Апликација може имати одређене крајње тачке које захтевају одређени ниво аутентификације, као што су "админ" или "анонимно".
Нападач би могао покушати да приступи анонимно дозвољеним крајњим тачкама како би заобишао ограничења и добио приступ осетљивим подацима или функционалности.