Belgelerden:Azure App Service, web uygulamaları, REST API'leri ve mobil arka uçlar barındırmak için HTTP tabanlı bir hizmettir. .NET, .NET Core, Java, Ruby, Node.js, PHP veya Python gibi favori dilinizde geliştirme yapabilirsiniz. Uygulamalar, hem Windows hem de Linux tabanlı ortamlarda kolayca çalışır ve ölçeklenir.
Her uygulama bir sandbox içinde çalışır, ancak izolasyon App Service planlarına bağlıdır.
Ücretsiz ve Paylaşılan katmanlardaki uygulamalar paylaşılan VM'lerde çalışır.
Standart ve Premium katmanlardaki uygulamalar özel VM'lerde çalışır.
Bu izolasyonların hiçbiri, diğer yaygın web güvenlik açıklarını (dosya yükleme veya enjeksiyonlar gibi) önlemez. Ve bir yönetim kimliği kullanılıyorsa, izinlerini tehlikeye atabilir.
Enumeration
# 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
Kimlik bilgilerini elde et ve web uygulaması koduna erişim sağla
# 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
Webapp ile Docker konteynerine ssh ile erişim:
# 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
Function Apps Temel Bilgiler
Azure Functions, daha az kod yazmanıza, daha az altyapı yönetmenize ve maliyetleri düşürmenize olanak tanıyan sunucusuz bir çözümdür. Sunucuları dağıtma ve bakımını yapma konusunda endişelenmek yerine, bulut altyapısı uygulamalarınızın çalışmasını sağlamak için gereken tüm güncel kaynakları sağlar.
Azure portalında, Azure Functions ile Azure API Management arasındaki entegrasyon kolaylaştırılmıştır ve HTTP tetikleyici fonksiyon uç noktalarının REST API'leri olarak açığa çıkarılmasına olanak tanır. Bu şekilde açığa çıkarılan API'ler, RESTful API'lere standart, dil bağımsız bir arayüz sağlayan bir OpenAPI tanımı kullanılarak tanımlanır.
Function Apps Yönetilen Kimlikleri destekler.
Ayrıca, Function App'in belirli bir düzeyde kimlik doğrulama gerektiren bazı uç noktaları olabilir, örneğin "admin" veya "anonymous".
Bir saldırgan, kısıtlamaları aşmak ve hassas verilere veya işlevselliğe erişim sağlamak için anonim izin verilen uç noktalara erişmeye çalışabilir.