From 86de7279766efcc3dd65c9b3741a57eccc583f71 Mon Sep 17 00:00:00 2001 From: Translator Date: Sat, 4 Jan 2025 03:48:25 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation --- .../az-app-services-privesc.md | 40 ++++++------- .../az-services/az-app-services.md | 60 +++++++------------ 2 files changed, 43 insertions(+), 57 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md index b7b265a31..6f36369dc 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md @@ -12,7 +12,7 @@ ### Microsoft.Web/sites/publish/Action, Microsoft.Web/sites/basicPublishingCredentialsPolicies/read, Microsoft.Web/sites/config/read, Microsoft.Web/sites/read -Αυτές οι άδειες επιτρέπουν την απόκτηση ενός **SSH shell** μέσα σε μια εφαρμογή ιστού. Επίσης επιτρέπουν την **αποσφαλμάτωση** της εφαρμογής. +Αυτές οι άδειες επιτρέπουν την πρόσβαση σε ένα **SSH shell** μέσα σε μια εφαρμογή ιστού. Επίσης, επιτρέπουν την **αποσφαλμάτωση** της εφαρμογής. - **SSH σε μία εντολή**: ```bash @@ -23,7 +23,7 @@ az webapp ssh --name --resource-group ```bash az webapp create-remote-connection --name --resource-group -## If successfull you will get a message such as: +## If successful 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 @@ -124,14 +124,14 @@ az webapp deployment user set \ --user-name hacktricks \ --password 'W34kP@ssw0rd123!' ``` -Στη συνέχεια, μπορείτε να χρησιμοποιήσετε αυτά τα διαπιστευτήρια για να **έχετε πρόσβαση στις πλατφόρμες SCM και FTP**. Αυτός είναι επίσης ένας εξαιρετικός τρόπος για να διατηρήσετε την επιμονή. +Τότε, μπορείτε να χρησιμοποιήσετε αυτά τα διαπιστευτήρια για να **έχετε πρόσβαση στις πλατφόρμες SCM και FTP**. Αυτός είναι επίσης ένας εξαιρετικός τρόπος για να διατηρήσετε την επιμονή. Θυμηθείτε ότι για να αποκτήσετε πρόσβαση στην πλατφόρμα SCM από το **web πρέπει να αποκτήσετε πρόσβαση στο `/BasicAuth`**. > [!WARNING] -> Σημειώστε ότι κάθε χρήστης μπορεί να διαμορφώσει τα δικά του διαπιστευτήρια καλώντας την προηγούμενη εντολή, αλλά αν ο χρήστης δεν έχει αρκετές άδειες για να αποκτήσει πρόσβαση στο SCM ή FTP, τα διαπιστευτήρια δεν θα λειτουργήσουν. +> Σημειώστε ότι κάθε χρήστης μπορεί να ρυθμίσει τα δικά του διαπιστευτήρια καλώντας την προηγούμενη εντολή, αλλά αν ο χρήστης δεν έχει αρκετές άδειες για να αποκτήσει πρόσβαση στο SCM ή FTP, τα διαπιστευτήρια δεν θα λειτουργήσουν. -- Αν δείτε ότι αυτά τα διαπιστευτήρια είναι **REDACTED**, είναι επειδή **πρέπει να ενεργοποιήσετε την επιλογή βασικής αυθεντικοποίησης SCM** και για αυτό χρειάζεστε τη δεύτερη άδεια (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):` +- Αν δείτε ότι αυτά τα διαπιστευτήρια είναι **REDACTED**, είναι επειδή **πρέπει να ενεργοποιήσετε την επιλογή βασικής αυθεντικοποίησης SCM** και για αυτό χρειάζεστε τη δεύτερη άδεια (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`): ```bash # Enable basic authentication for SCM az rest --method PUT \ @@ -149,7 +149,7 @@ az rest --method PUT \ "properties": { "allow": true } -} +}' ``` ### Δημοσίευση κώδικα χρησιμοποιώντας διαπιστευτήρια SCM @@ -157,13 +157,13 @@ az rest --method PUT \ Για αυτό το παράδειγμα python μπορείτε να κατεβάσετε το repo από https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart, να κάνετε οποιεσδήποτε **αλλαγές** επιθυμείτε και στη συνέχεια να **συμπιέσετε τρέχοντας: `zip -r app.zip .`**. -Στη συνέχεια, μπορείτε να **δημοσιεύσετε τον κώδικα** με την παρακάτω εντολή: +Στη συνέχεια, μπορείτε να **δημοσιεύσετε τον κώδικα** σε μια διαδικτυακή εφαρμογή με την παρακάτω εντολή: ```bash curl -X POST "/api/publish?type=zip" --data-binary "@./app.zip" -u ':' -H "Content-Type: application/octet-stream" ``` -### Microsoft.Web/sites/publish/Action | SCM credentials +### Webjobs: Microsoft.Web/sites/publish/Action | SCM credentials -Η αναφερόμενη άδεια Azure επιτρέπει την εκτέλεση αρκετών ενδιαφερόντων ενεργειών που μπορούν επίσης να εκτελούνται με τα SCM credentials: +Η αναφερόμενη άδεια Azure επιτρέπει την εκτέλεση αρκετών ενδιαφερόντων ενεργειών που μπορούν επίσης να εκτελούνται με τα διαπιστευτήρια SCM: - Διαβάστε τα **Webjobs** logs: ```bash @@ -173,7 +173,7 @@ az rest --method GET --url "https://lol-b5fyaeceh4e9dce0.scm.canadacentral-01.az # Using SCM username and password: curl "/vfs/data/jobs/continuous/job_name/job_log.txt" \ ---user ':>' -v +--user ':' -v ``` - Διαβάστε τον πηγαίο κώδικα του **Webjobs**: ```bash @@ -186,7 +186,7 @@ curl "/wwwroot/App_Data/jobs/" \ curl "https://nodewebapp-agamcvhgg3gkd3hs.scm.canadacentral-01.azurewebsites.net/wwwroot/App_Data/jobs/continuous/job_name/rev.js" \ --user ':' ``` -- Δημιουργία **συνεχούς Webjob**: +- Δημιουργήστε **συνεχή Webjob**: ```bash # Using Azure permissions az rest \ @@ -203,6 +203,12 @@ curl -X PUT \ --data-binary "@/Users/carlospolop/Downloads/rev.js" \ --user ':' ``` +### Microsoft.Web/sites/write, Microsoft.Web/sites/read, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action + +Αυτές οι άδειες επιτρέπουν να **ανατεθεί μια διαχειριζόμενη ταυτότητα** στην υπηρεσία App, οπότε αν μια υπηρεσία App είχε προηγουμένως παραβιαστεί, αυτό θα επιτρέψει στον επιτιθέμενο να αναθέσει νέες διαχειριζόμενες ταυτότητες στην υπηρεσία App και να **κλιμακώσει τα δικαιώματα** σε αυτές. +```bash +az webapp identity assign --name --resource-group --identities /subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/ +``` ### Microsoft.Web/sites/config/list/action Αυτή η άδεια επιτρέπει την καταγραφή των **connection strings** και των **appsettings** της υπηρεσίας App, τα οποία μπορεί να περιέχουν ευαίσθητες πληροφορίες όπως διαπιστευτήρια βάσης δεδομένων. @@ -210,12 +216,6 @@ curl -X PUT \ az webapp config connection-string list --name --resource-group az webapp config appsettings list --name --resource-group ``` -### Microsoft.Web/sites/write, Microsoft.Web/sites/read, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action - -Αυτές οι άδειες επιτρέπουν να **ανατεθεί μια διαχειριζόμενη ταυτότητα** στην υπηρεσία App, οπότε αν μια υπηρεσία App είχε προηγουμένως παραβιαστεί, αυτό θα επιτρέψει στον επιτιθέμενο να αναθέσει νέες διαχειριζόμενες ταυτότητες στην υπηρεσία App και να **κλιμακώσει τα δικαιώματα** σε αυτές. -```bash -az webapp identity assign --name --resource-group --identities /subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/ -``` ### Διαβάστε τις Ρυθμισμένες Πιστοποιήσεις Τρίτων Εκτελώντας την παρακάτω εντολή, είναι δυνατόν να **διαβάσετε τις πιστοποιήσεις τρίτων** που είναι ρυθμισμένες στον τρέχοντα λογαριασμό. Σημειώστε ότι αν για παράδειγμα κάποιες πιστοποιήσεις Github είναι ρυθμισμένες σε διαφορετικό χρήστη, δεν θα μπορείτε να αποκτήσετε πρόσβαση στο token από έναν διαφορετικό. @@ -251,13 +251,13 @@ https://graph.microsoft.com/v1.0/me/drive/root/children ### Ενημέρωση Κώδικα Εφαρμογής από την πηγή - Εάν η ρυθμισμένη πηγή είναι ένας τρίτος πάροχος όπως το Github, το BitBucket ή ένα Azure Repository, μπορείτε να **ενημερώσετε τον κώδικα** της υπηρεσίας εφαρμογής παραβιάζοντας τον πηγαίο κώδικα στο αποθετήριο. -- Εάν η εφαρμογή είναι ρυθμισμένη να χρησιμοποιεί ένα **απομακρυσμένο git repository** (με όνομα χρήστη και κωδικό πρόσβασης), είναι δυνατόν να αποκτήσετε το **URL και τα βασικά διαπιστευτήρια αυθεντικοποίησης** για να κλωνοποιήσετε και να σπρώξετε αλλαγές με: +- Εάν η εφαρμογή είναι ρυθμισμένη να χρησιμοποιεί ένα **απομακρυσμένο git repository** (με όνομα χρήστη και κωδικό πρόσβασης), είναι δυνατόν να αποκτήσετε το **URL και τα βασικά διαπιστευτήρια αυθεντικοποίησης** για να κλωνοποιήσετε και να στείλετε αλλαγές με: - Χρησιμοποιώντας την άδεια **`Microsoft.Web/sites/sourcecontrols/read`**: `az webapp deployment source show --name --resource-group ` - Χρησιμοποιώντας την άδεια **`Microsoft.Web/sites/config/list/action`**: - `az webapp deployment list-publishing-credentials --name --resource-group ` - `az rest --method POST --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"` -- Εάν η εφαρμογή είναι ρυθμισμένη να χρησιμοποιεί ένα **τοπικό git repository**, είναι δυνατόν να **κλωνοποιήσετε το αποθετήριο** και να **σπρώξετε αλλαγές** σε αυτό: -- Χρησιμοποιώντας την άδεια **`Microsoft.Web/sites/sourcecontrols/read`**: Μπορείτε να αποκτήσετε το URL του git repo με `az webapp deployment source show --name --resource-group `, αλλά θα είναι το ίδιο με το SCM URL της εφαρμογής με την διαδρομή `/.git` (π.χ. `https://pythonwebapp-audeh9f5fzeyhhed.scm.canadacentral-01.azurewebsites.net:443/pythonwebapp.git`). +- Εάν η εφαρμογή είναι ρυθμισμένη να χρησιμοποιεί ένα **τοπικό git repository**, είναι δυνατόν να **κλωνοποιήσετε το αποθετήριο** και να **στείλετε αλλαγές** σε αυτό: +- Χρησιμοποιώντας την άδεια **`Microsoft.Web/sites/sourcecontrols/read`**: Μπορείτε να αποκτήσετε το URL του git repo με `az webapp deployment source show --name --resource-group `, αλλά θα είναι το ίδιο με το SCM URL της εφαρμογής με τη διαδρομή `/.git` (π.χ. `https://pythonwebapp-audeh9f5fzeyhhed.scm.canadacentral-01.azurewebsites.net:443/pythonwebapp.git`). - Για να αποκτήσετε τα διαπιστευτήρια SCM χρειάζεστε την άδεια: - **`Microsoft.Web/sites/publishxml/action`**: Στη συνέχεια, εκτελέστε `az webapp deployment list-publishing-profiles --resource-group -n `. - **`Microsoft.Web/sites/config/list/action`**: Στη συνέχεια, εκτελέστε `az webapp deployment list-publishing-credentials --name --resource-group ` diff --git a/src/pentesting-cloud/azure-security/az-services/az-app-services.md b/src/pentesting-cloud/azure-security/az-services/az-app-services.md index d016b98e9..2e36f4d53 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-app-services.md +++ b/src/pentesting-cloud/azure-security/az-services/az-app-services.md @@ -4,13 +4,13 @@ ## App Service Basic Information -Azure App Services επιτρέπει στους προγραμματιστές να **δημιουργούν, αναπτύσσουν και κλιμακώνουν διαδικτυακές εφαρμογές, backend εφαρμογών κινητών και APIs χωρίς προβλήματα**. Υποστηρίζει πολλές γλώσσες προγραμματισμού και ενσωματώνεται με διάφορα εργαλεία και υπηρεσίες Azure για βελτιωμένη λειτουργικότητα και διαχείριση. +Οι Azure App Services επιτρέπουν στους προγραμματιστές να **δημιουργούν, αναπτύσσουν και κλιμακώνουν διαδικτυακές εφαρμογές, backend εφαρμογών κινητών και APIs χωρίς προβλήματα**. Υποστηρίζει πολλές γλώσσες προγραμματισμού και ενσωματώνεται με διάφορα εργαλεία και υπηρεσίες Azure για βελτιωμένη λειτουργικότητα και διαχείριση. Κάθε εφαρμογή εκτελείται μέσα σε ένα sandbox, αλλά η απομόνωση εξαρτάται από τα σχέδια App Service: -- Οι εφαρμογές σε δωρεάν και κοινές κατηγορίες εκτελούνται σε **κοινές VM** -- Οι εφαρμογές σε κανονικές και premium κατηγορίες εκτελούνται σε **αφιερωμένες VM που μοιράζονται μόνο από εφαρμογές** στο ίδιο σχέδιο App Service. -- Οι απομονωμένες κατηγορίες εκτελούνται σε **αφιερωμένες VM σε αφιερωμένα εικονικά δίκτυα**, βελτιώνοντας την απομόνωση των εφαρμογών. +- Οι εφαρμογές σε δωρεάν και κοινά επίπεδα εκτελούνται σε **κοινές VM** +- Οι εφαρμογές σε τυπικά και premium επίπεδα εκτελούνται σε **αφιερωμένες VM που μοιράζονται μόνο από εφαρμογές** στο ίδιο σχέδιο App Service. +- Τα απομονωμένα επίπεδα εκτελούνται σε **αφιερωμένες VM σε αφιερωμένα εικονικά δίκτυα**, βελτιώνοντας την απομόνωση των εφαρμογών. > [!WARNING] > Σημειώστε ότι **κανένα** από αυτά τα επίπεδα απομόνωσης **δεν αποτρέπει** άλλες κοινές **ευπάθειες ιστού** (όπως η μεταφόρτωση αρχείων ή οι εισβολές). Και αν χρησιμοποιηθεί μια **ταυτότητα διαχείρισης**, θα μπορούσε να είναι σε θέση να **κλιμακώσει τα δικαιώματα σε αυτές**. @@ -21,7 +21,7 @@ Azure App Services επιτρέπει στους προγραμματιστές - Αυτό είναι απαραίτητο αν έχετε μια webjob που χρειάζεται να εκτελείται συνεχώς, καθώς η webjob θα σταματήσει αν η εφαρμογή σταματήσει. - **SSH**: Αν είναι ενεργοποιημένο, ένας χρήστης με αρκετά δικαιώματα μπορεί να συνδεθεί στην εφαρμογή χρησιμοποιώντας SSH. - **Debugging**: Αν είναι ενεργοποιημένο, ένας χρήστης με αρκετά δικαιώματα μπορεί να αποσφαλματώσει την εφαρμογή. Ωστόσο, αυτό απενεργοποιείται αυτόματα κάθε 48 ώρες. -- **Web App + Database**: Η διαδικτυακή κονσόλα επιτρέπει τη δημιουργία μιας εφαρμογής με μια βάση δεδομένων. Σε αυτή την περίπτωση, είναι δυνατή η επιλογή της βάσης δεδομένων που θα χρησιμοποιηθεί (SQLAzure, PostgreSQL, MySQL, MongoDB) και επιτρέπει επίσης τη δημιουργία ενός Azure Cache για Redis. +- **Web App + Database**: Η διαδικτυακή κονσόλα επιτρέπει τη δημιουργία μιας εφαρμογής με μια βάση δεδομένων. Σε αυτή την περίπτωση, είναι δυνατή η επιλογή της βάσης δεδομένων που θα χρησιμοποιηθεί (SQLAzure, PostgreSQL, MySQL, MongoDB) και επιτρέπει επίσης τη δημιουργία ενός Azure Cache for Redis. - Η διεύθυνση URL που περιέχει τα διαπιστευτήρια για τη βάση δεδομένων και το Redis θα αποθηκευτεί στα **appsettings**. - **Container**: Είναι δυνατή η ανάπτυξη ενός container στην υπηρεσία App Service υποδεικνύοντας τη διεύθυνση URL του container και τα διαπιστευτήρια για την πρόσβαση σε αυτό. - **Mounts**: Είναι δυνατή η δημιουργία 5 mounts από λογαριασμούς αποθήκευσης, είτε αυτοί είναι Azure Blob (Μόνο για Ανάγνωση) είτε Azure Files. Η ρύθμιση θα αποθηκεύσει το κλειδί πρόσβασης πάνω από τον λογαριασμό αποθήκευσης. @@ -32,16 +32,16 @@ Azure App Services επιτρέπει στους προγραμματιστές Για να αποκτήσετε πρόσβαση στους διακομιστές SCM και FTP, απαιτείται ένα **όνομα χρήστη και κωδικός πρόσβασης**. Επομένως, η Azure παρέχει κάποιες **APIs για να αποκτήσετε τις διευθύνσεις URL** σε αυτές τις πλατφόρμες και τα διαπιστευτήρια. -Ο **διακομιστής FTP δεν έχει καμία ειδική μαγεία**, απλώς με την έγκυρη διεύθυνση URL, το όνομα χρήστη και τον κωδικό πρόσβασης είναι δυνατή η σύνδεση και η απόκτηση δικαιωμάτων ανάγνωσης και εγγραφής στο περιβάλλον της εφαρμογής. +Ο **διακομιστής FTP δεν έχει καμία ειδική μαγεία**, απλά με την έγκυρη διεύθυνση URL, το όνομα χρήστη και τον κωδικό πρόσβασης είναι δυνατή η σύνδεση και η απόκτηση δικαιωμάτων ανάγνωσης και εγγραφής στο περιβάλλον της εφαρμογής. Το SCM -Είναι δυνατή η σύνδεση στο SCM χρησιμοποιώντας έναν διαδικτυακό περιηγητή στη διεύθυνση `https:///BasicAuth` και έλεγχος όλων των αρχείων και των αναπτύξεων εκεί. +Είναι δυνατή η σύνδεση στο SCM χρησιμοποιώντας έναν διαδικτυακό περιηγητή στη διεύθυνση `https:///BasicAuth` και η εξέταση όλων των αρχείων και των αναπτύξεων εκεί. ### Kudu -Kudu είναι η πλατφόρμα που **διαχειρίζεται τόσο το SCM όσο και μια διαδικτυακή και API διεπαφή** για τη διαχείριση μιας υπηρεσίας App Service, και παρέχει δυνατότητες ανάπτυξης βασισμένες σε Git, απομακρυσμένη αποσφαλμάτωση και διαχείριση αρχείων. Είναι προσβάσιμη μέσω της διεύθυνσης URL SCM που ορίζεται στην διαδικτυακή εφαρμογή. +Το Kudu είναι η πλατφόρμα που **διαχειρίζεται τόσο το SCM όσο και μια διαδικτυακή και API διεπαφή** για τη διαχείριση μιας υπηρεσίας App Service, και παρέχει δυνατότητες ανάπτυξης βασισμένες σε Git, απομακρυσμένη αποσφαλμάτωση και διαχείριση αρχείων. Είναι προσβάσιμο μέσω της διεύθυνσης URL SCM που ορίζεται στην διαδικτυακή εφαρμογή. -Σημειώστε ότι οι εκδόσεις Kudu που χρησιμοποιούνται από τις Υπηρεσίες App και από τις Εφαρμογές Λειτουργιών είναι διαφορετικές, με την έκδοση των Εφαρμογών Λειτουργιών να είναι πολύ πιο περιορισμένη. +Σημειώστε ότι οι εκδόσεις Kudu που χρησιμοποιούνται από τις υπηρεσίες App Services και από τις Function Apps είναι διαφορετικές, με την έκδοση των Function apps να είναι πολύ πιο περιορισμένη. Ορισμένα ενδιαφέροντα endpoints που μπορείτε να βρείτε στο Kudu είναι: - `/BasicAuth`: Πρέπει να αποκτήσετε πρόσβαση σε αυτή τη διαδρομή για να **συνδεθείτε στο Kudu**. @@ -52,15 +52,15 @@ Kudu είναι η πλατφόρμα που **διαχειρίζεται τόσ - `/Env`: Λάβετε πληροφορίες σχετικά με το σύστημα, τις ρυθμίσεις εφαρμογής, τις μεταβλητές περιβάλλοντος, τις συμβολοσειρές σύνδεσης και τις κεφαλίδες HTTP. - `/wwwroot/`: Ο ριζικός κατάλογος της διαδικτυακής εφαρμογής. Μπορείτε να κατεβάσετε όλα τα αρχεία από εδώ. -Επιπλέον, το Kudu ήταν ανοιχτού κώδικα στο [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu), αλλά το έργο έχει αποσυρθεί και συγκρίνοντας τη συμπεριφορά του τρέχοντος Kudu στην Azure με το παλιό, είναι δυνατό να παρατηρήσετε ότι **πολλά πράγματα έχουν ήδη αλλάξει**. +Επιπλέον, το Kudu ήταν ανοιχτού κώδικα στο [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu), αλλά το έργο έχει αποσυρθεί και συγκρίνοντας τη συμπεριφορά του τρέχοντος Kudu στην Azure με το παλιό, είναι δυνατόν να παρατηρήσετε ότι **πολλά πράγματα έχουν ήδη αλλάξει**. ## Sources -Οι Υπηρεσίες App επιτρέπουν την αποστολή του κώδικα ως αρχείο zip από προεπιλογή, αλλά επιτρέπουν επίσης τη σύνδεση σε μια τρίτη υπηρεσία και την απόκτηση του κώδικα από εκεί. +Οι υπηρεσίες App Services επιτρέπουν την ανέβασμα του κώδικα ως αρχείο zip από προεπιλογή, αλλά επιτρέπουν επίσης τη σύνδεση σε μια τρίτη υπηρεσία και την απόκτηση του κώδικα από εκεί. - Οι τρέχουσες υποστηριζόμενες τρίτες πηγές είναι **Github** και **Bitbucket**. - Μπορείτε να αποκτήσετε τα διαπιστευτήρια αυθεντικοποίησης εκτελώντας `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"` -- Η Azure από προεπιλογή θα ρυθμίσει μια **Github Action** για να αναπτύξει τον κώδικα στην Υπηρεσία App κάθε φορά που ενημερώνεται ο κώδικας. +- Η Azure από προεπιλογή θα ρυθμίσει μια **Github Action** για να αναπτύξει τον κώδικα στην υπηρεσία App Service κάθε φορά που ενημερώνεται ο κώδικας. - Είναι επίσης δυνατή η ένδειξη ενός **απομακρυσμένου git repository** (με όνομα χρήστη και κωδικό πρόσβασης) για να αποκτήσετε τον κώδικα από εκεί. - Μπορείτε να αποκτήσετε τα διαπιστευτήρια για το απομακρυσμένο repo εκτελώντας `az webapp deployment source show --name --resource-group ` ή `az rest --method POST --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"` - Είναι επίσης δυνατή η χρήση ενός **Azure Repository**. @@ -70,10 +70,10 @@ Kudu είναι η πλατφόρμα που **διαχειρίζεται τόσ ## Webjobs -Οι Azure WebJobs είναι **εργασίες φόντου που εκτελούνται στο περιβάλλον Azure App Service**. Επιτρέπουν στους προγραμματιστές να εκτελούν σενάρια ή προγράμματα παράλληλα με τις διαδικτυακές τους εφαρμογές, διευκολύνοντας την εκτέλεση ασύγχρονων ή χρονοβόρων εργασιών όπως η επεξεργασία αρχείων, η διαχείριση δεδομένων ή οι προγραμματισμένες εργασίες. +Οι Azure WebJobs είναι **εργασίες φόντου που εκτελούνται στο περιβάλλον Azure App Service**. Επιτρέπουν στους προγραμματιστές να εκτελούν σενάρια ή προγράμματα παράλληλα με τις διαδικτυακές τους εφαρμογές, διευκολύνοντας την επεξεργασία ασύγχρονων ή χρονοβόρων λειτουργιών όπως η επεξεργασία αρχείων, η διαχείριση δεδομένων ή οι προγραμματισμένες εργασίες. Υπάρχουν 2 τύποι web jobs: - **Continuous**: Εκτελείται αδιάκοπα σε βρόχο και ενεργοποιείται μόλις δημιουργηθεί. Είναι ιδανικό για εργασίες που απαιτούν συνεχή επεξεργασία. Ωστόσο, αν η εφαρμογή σταματήσει να λειτουργεί επειδή το Always On είναι απενεργοποιημένο και δεν έχει λάβει αίτημα τα τελευταία 20 λεπτά, η web job θα σταματήσει επίσης. -- **Triggered**: Εκτελείται κατόπιν αιτήματος ή με βάση ένα πρόγραμμα. Είναι πιο κατάλληλο για περιοδικές εργασίες, όπως ενημερώσεις δεδομένων σε παρτίδες ή ρουτίνες συντήρησης. +- **Triggered**: Εκτελείται κατόπιν αιτήματος ή με βάση ένα πρόγραμμα. Είναι καλύτερα προσαρμοσμένο για περιοδικές εργασίες, όπως ενημερώσεις δεδομένων batch ή ρουτίνες συντήρησης. Οι webjobs είναι πολύ ενδιαφέρουσες από την προοπτική των επιτιθέμενων, καθώς θα μπορούσαν να χρησιμοποιηθούν για **εκτέλεση κώδικα** στο περιβάλλον και **κλιμάκωση δικαιωμάτων** στις συνδεδεμένες διαχειριζόμενες ταυτότητες. @@ -81,15 +81,15 @@ Kudu είναι η πλατφόρμα που **διαχειρίζεται τόσ ## Slots -Οι Θέσεις Υπηρεσίας App Azure χρησιμοποιούνται για **να αναπτύξουν διαφορετικές εκδόσεις της εφαρμογής** στην ίδια Υπηρεσία App. Αυτό επιτρέπει στους προγραμματιστές να δοκιμάζουν νέες δυνατότητες ή αλλαγές σε ένα ξεχωριστό περιβάλλον πριν τις αναπτύξουν στο περιβάλλον παραγωγής. +Οι Azure App Service Slots χρησιμοποιούνται για **να αναπτύξουν διαφορετικές εκδόσεις της εφαρμογής** στην ίδια υπηρεσία App Service. Αυτό επιτρέπει στους προγραμματιστές να δοκιμάζουν νέες δυνατότητες ή αλλαγές σε ένα ξεχωριστό περιβάλλον πριν τις αναπτύξουν στο περιβάλλον παραγωγής. -Επιπλέον, είναι δυνατή η δρομολόγηση ενός **ποσοστού της κίνησης** σε μια συγκεκριμένη θέση, κάτι που είναι χρήσιμο για A/B testing και για **σκοπούς backdoor**. +Επιπλέον, είναι δυνατή η δρομολόγηση ενός **ποσοστού της κίνησης** σε μια συγκεκριμένη υποδοχή, κάτι που είναι χρήσιμο για A/B testing και για **σκοπούς backdoor**. ## Azure Function Apps -Βασικά, **οι Azure Function apps είναι ένα υποσύνολο της Azure App Service** στην διαδικτυακή κονσόλα και αν πάτε στην διαδικτυακή κονσόλα και καταγράψετε όλες τις υπηρεσίες εφαρμογών ή εκτελέσετε `az webapp list` στο az cli, θα μπορείτε να **δείτε τις Εφαρμογές Λειτουργιών επίσης καταγεγραμμένες εκεί**. +Βασικά, **οι Azure Function apps είναι ένα υποσύνολο των Azure App Service** στην διαδικτυακή κονσόλα και αν πάτε στην διαδικτυακή κονσόλα και καταγράψετε όλες τις υπηρεσίες εφαρμογών ή εκτελέσετε `az webapp list` στο az cli, θα μπορείτε να **δείτε τις Function apps επίσης καταγεγραμμένες εκεί**. -Επομένως, και οι δύο υπηρεσίες έχουν κυρίως τις **ίδιες ρυθμίσεις, δυνατότητες και επιλογές στο az cli**, αν και μπορεί να τις ρυθμίζουν λίγο διαφορετικά (όπως οι προεπιλεγμένες τιμές των appsettings ή η χρήση ενός Λογαριασμού Αποθήκευσης στις Εφαρμογές Λειτουργιών). +Επομένως, και οι δύο υπηρεσίες έχουν κυρίως τις **ίδιες ρυθμίσεις, δυνατότητες και επιλογές στο az cli**, αν και μπορεί να τις ρυθμίζουν λίγο διαφορετικά (όπως οι προεπιλεγμένες τιμές των appsettings ή η χρήση ενός Storage Account στις Function apps). ## Enumeration @@ -156,6 +156,9 @@ az webapp config storage-account list --name --resource-group # Get configured container (if any) in the webapp, it could contain credentials az webapp config container show --name --resource-group +# Get git URL to access the code +az webapp deployment source config-local-git --resource-group -n + # Get Webjobs az webapp webjob continuous list --resource-group --name az webapp webjob triggered list --resource-group --name @@ -217,24 +220,7 @@ done {{#endtab }} {{#endtabs }} -#### Αποκτήστε διαπιστευτήρια & αποκτήστε πρόσβαση στον κώδικα της εφαρμογής ιστού -```bash -# Get connection strings that could contain credentials (with DBs for example) -az webapp config connection-string list --name --resource-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 -n - - -# Get git URL to access the code -az webapp deployment source config-local-git --resource-group -n - -# Access/Modify the code via git -git clone 'https://:@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 -``` {{#ref}} ../az-privilege-escalation/az-app-services-privesc.md {{#endref}} @@ -267,10 +253,10 @@ az webapp up --runtime PYTHON:3.9 --sku B1 --logs 2. Δημιουργήστε μια νέα python Web App στο Azure. 3. Στο `Deployment Center` αλλάξτε την πηγή, συνδεθείτε με το Github, επιλέξτε το forked repo και κάντε κλικ στο `Save`. -Όπως και στην προηγούμενη περίπτωση, συνδεόμενοι στο SCM portal ή συνδεόμενοι μέσω FTP, είναι δυνατόν να δούμε στο `/wwwroot` το συμπιεσμένο αρχείο `output.tar.gz` που περιέχει τον κώδικα της webapp. +Όπως στην προηγούμενη περίπτωση, συνδεόμενοι στο SCM portal ή συνδεόμενοι μέσω FTP, είναι δυνατόν να δούμε στο `/wwwroot` το συμπιεσμένο αρχείο `output.tar.gz` που περιέχει τον κώδικα της webapp. > [!TIP] -> Απλώς η σύνδεση μέσω FTP και η τροποποίηση του αρχείου `output.tar.gz` και η επανενεργοποίηση μιας ανάπτυξης δεν είναι αρκετή για να αλλάξει τον κώδικα που εκτελείται από την webapp. +> Απλώς η σύνδεση μέσω FTP και η τροποποίηση του αρχείου `output.tar.gz` και η επαναφορά μιας ανάπτυξης δεν είναι αρκετή για να αλλάξει τον κώδικα που εκτελείται από την webapp. ## Privilege Escalation