Από τα έγγραφα:Azure App Service είναι μια υπηρεσία βασισμένη σε HTTP για τη φιλοξενία διαδικτυακών εφαρμογών, REST APIs και κινητών back ends. Μπορείτε να αναπτύξετε στη γλώσσα που προτιμάτε, είτε είναι .NET, .NET Core, Java, Ruby, Node.js, PHP ή Python. Οι εφαρμογές εκτελούνται και κλιμακώνονται εύκολα σε περιβάλλοντα Windows και Linux.
Κάθε εφαρμογή εκτελείται μέσα σε ένα sandbox, αλλά η απομόνωση εξαρτάται από τα σχέδια Υπηρεσίας Εφαρμογών
Οι εφαρμογές σε δωρεάν και κοινά επίπεδα εκτελούνται σε κοινές VM
Οι εφαρμογές σε τυπικά και premium επίπεδα εκτελούνται σε αποκλειστικές VM
Σημειώστε ότι κανένα από αυτά τα επίπεδα απομόνωσης δεν αποτρέπει άλλες κοινές ευπάθειες ιστού (όπως η μεταφόρτωση αρχείων ή οι εισβολές). Και αν χρησιμοποιηθεί μια ταυτότητα διαχείρισης, θα μπορούσε να είναι σε θέση να συμβιβάσει τις άδειές της.
Αριθμητική
# 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
Αποκτήστε διαπιστευτήρια & αποκτήστε πρόσβαση στον κώδικα της εφαρμογής ιστού
# 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
Πρόσβαση στο Docker container με την webapp μέσω 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
Function Apps Basic Information
Azure Functions είναι μια serverless λύση που σας επιτρέπει να γράφετε λιγότερο κώδικα, να διατηρείτε λιγότερη υποδομή και να εξοικονομείτε κόστος. Αντί να ανησυχείτε για την ανάπτυξη και τη συντήρηση διακομιστών, η υποδομή cloud παρέχει όλους τους ενημερωμένους πόρους που χρειάζονται για να διατηρούνται οι εφαρμογές σας σε λειτουργία.
Στο Azure portal, η ενσωμάτωση μεταξύ Azure Functions και Azure API Management διευκολύνεται, επιτρέποντας HTTP trigger function endpoints να εκτίθενται ως REST APIs. Οι APIs που εκτίθενται με αυτόν τον τρόπο περιγράφονται χρησιμοποιώντας έναν ορισμό OpenAPI, παρέχοντας μια τυπική, γλώσσα-ανεξάρτητη διεπαφή για RESTful APIs.
Function Apps υποστηρίζουν Managed Identities.
Επιπλέον, το Function App μπορεί να έχει ορισμένα endpoints που απαιτούν ένα συγκεκριμένο επίπεδο αυθεντικοποίησης, όπως "admin" ή "anonymous".
Ένας επιτιθέμενος θα μπορούσε να προσπαθήσει να αποκτήσει πρόσβαση στα anonymous allowed endpoints για να παρακάμψει τους περιορισμούς και να αποκτήσει πρόσβαση σε ευαίσθητα δεδομένα ή λειτουργικότητα.