15 KiB
Az - SQL
{{#include ../../../banners/hacktricks-training.md}}
Azure SQL
Azure SQL è una famiglia di prodotti gestiti, sicuri e intelligenti che utilizzano il motore di database SQL Server nel cloud Azure. Ciò significa che non devi preoccuparti dell'amministrazione fisica dei tuoi server e puoi concentrarti sulla gestione dei tuoi dati.
Azure SQL consiste in tre principali offerte:
- Azure SQL Database: Questo è un servizio di database completamente gestito, che ti consente di ospitare database individuali nel cloud Azure. Offre intelligenza integrata che apprende i tuoi modelli unici di database e fornisce raccomandazioni personalizzate e ottimizzazione automatica.
- Azure SQL Managed Instance: Questo è per implementazioni su larga scala, a livello di intera istanza SQL Server. Fornisce quasi il 100% di compatibilità con l'ultima versione del motore di database SQL Server on-premises (Enterprise Edition), che offre un'implementazione nativa della rete virtuale (VNet) che affronta le comuni preoccupazioni di sicurezza, e un modello di business favorevole per i clienti SQL Server on-premises.
- Azure SQL Server su Azure VMs: Questo è Infrastructure as a Service (IaaS) ed è migliore per le migrazioni in cui desideri controllo sul sistema operativo e sull'istanza SQL Server, come se fosse un server in esecuzione on-premises.
Azure SQL Database
Azure SQL Database è una piattaforma di database completamente gestita come servizio (PaaS) che fornisce soluzioni di database relazionali scalabili e sicure. È costruita sulle ultime tecnologie SQL Server ed elimina la necessità di gestione dell'infrastruttura, rendendola una scelta popolare per le applicazioni basate su cloud.
Caratteristiche principali
- Sempre aggiornato: Funziona sull'ultima versione stabile di SQL Server e riceve automaticamente nuove funzionalità e patch.
- Capacità PaaS: Alta disponibilità integrata, backup e aggiornamenti.
- Flessibilità dei dati: Supporta dati relazionali e non relazionali (ad es., grafi, JSON, spaziali e XML).
Modelli di acquisto / Livelli di servizio
- Basato su vCore: Scegli computazione, memoria e archiviazione in modo indipendente. Per uso generale, Business Critical (con alta resilienza e prestazioni per app OLTP), e scala fino a 128 TB di archiviazione.
- Basato su DTU: Raggruppa computazione, memoria e I/O in livelli fissi. Risorse bilanciate per compiti comuni.
- Standard: Risorse bilanciate per compiti comuni.
- Premium: Alte prestazioni per carichi di lavoro esigenti.
Modelli di distribuzione
Azure SQL Database supporta opzioni di distribuzione flessibili per soddisfare varie esigenze:
- Database singolo:
- Un database completamente isolato con le proprie risorse dedicate.
- Ottimo per microservizi o applicazioni che richiedono una singola fonte di dati.
- Elastic Pool:
- Consente a più database di condividere risorse all'interno di un pool.
- Economico per applicazioni con modelli di utilizzo fluttuanti tra più database.
Prestazioni scalabili e pool
- Database singoli: Ogni database è isolato e ha le proprie risorse dedicate di computazione, memoria e archiviazione. Le risorse possono essere scalate dinamicamente (su o giù) senza tempi di inattività (1–128 vCores, 32 GB–4 TB di archiviazione, e fino a 128 TB).
- Elastic Pools: Condividono risorse tra più database in un pool per massimizzare l'efficienza e risparmiare costi. Le risorse possono anche essere scalate dinamicamente per l'intero pool.
- Flessibilità del livello di servizio: Inizia in piccolo con un database singolo nel livello di uso generale. Aggiorna a livelli Business Critical o Hyperscale man mano che le esigenze crescono.
- Opzioni di scalabilità: Scalabilità dinamica o alternative di autoscalabilità.
Monitoraggio e ottimizzazione integrati
- Query Store: Monitora i problemi di prestazioni, identifica i principali consumatori di risorse e offre raccomandazioni pratiche.
- Ottimizzazione automatica: Ottimizza proattivamente le prestazioni con funzionalità come indicizzazione automatica e correzioni del piano di query.
- Integrazione della telemetria: Supporta il monitoraggio tramite Azure Monitor, Event Hubs o Azure Storage per approfondimenti personalizzati.
Recupero da disastri e disponibilità
- Backup automatici: SQL Database esegue automaticamente backup completi, differenziali e di log delle transazioni dei database.
- Ripristino a un punto nel tempo: Recupera i database a qualsiasi stato passato all'interno del periodo di retention dei backup.
- Geo-Redundancy
- Gruppi di failover: Semplifica il recupero da disastri raggruppando i database per failover automatico tra le regioni.
Azure SQL Managed Instance
Azure SQL Managed Instance è un motore di database Platform as a Service (PaaS) che offre quasi il 100% di compatibilità con SQL Server e gestisce automaticamente la maggior parte dei compiti di gestione (ad es., aggiornamenti, patching, backup, monitoraggio). Fornisce una soluzione cloud per la migrazione dei database SQL Server on-premises con minime modifiche.
Livelli di servizio
- Uso generale: Opzione economica per applicazioni con requisiti standard di I/O e latenza.
- Business Critical: Opzione ad alte prestazioni con bassa latenza I/O per carichi di lavoro critici.
Caratteristiche avanzate di sicurezza
- Protezione dalle minacce: Avvisi di protezione avanzata dalle minacce per attività sospette e attacchi di SQL injection. Audit per monitorare e registrare eventi del database per la conformità.
- Controllo degli accessi: Autenticazione Microsoft Entra per la gestione centralizzata dell'identità. Sicurezza a livello di riga e mascheramento dinamico dei dati per un controllo degli accessi granulare.
- Backup: Backup automatici e manuali con capacità di ripristino a un punto nel tempo.
Azure SQL Virtual Machines
Azure SQL Virtual Machines è migliore per le migrazioni in cui desideri controllo sul sistema operativo e sull'istanza SQL Server, come se fosse un server in esecuzione on-premises. Può avere diverse dimensioni di macchina e una vasta selezione di versioni e edizioni di SQL Server.
Caratteristiche principali
Backup automatico: Pianifica backup per i database SQL.
Patch automatiche: Automatizza l'installazione degli aggiornamenti di Windows e SQL Server durante una finestra di manutenzione.
Integrazione con Azure Key Vault: Configura automaticamente Key Vault per le VM SQL Server.
Integrazione con Defender for Cloud: Visualizza le raccomandazioni di Defender for SQL nel portale.
Flessibilità di versione/edizione: Cambia i metadati della versione o edizione di SQL Server senza ridistribuire la VM.
Caratteristiche di sicurezza
Microsoft Defender for SQL: Approfondimenti e avvisi di sicurezza.
Integrazione con Azure Key Vault: Archiviazione sicura di credenziali e chiavi di crittografia.
Microsoft Entra (Azure AD): Autenticazione e controllo degli accessi.
Enumerazione
{{#tabs}} {{#tab name="az cli"}}
# List Servers
az sql server list # --output table
## List Server Usages
az sql server list-usages --name <server_name> --resource-group <resource_group>
## List Server Firewalls
az sql server firewall-rule list --resource-group <resource_group> --server <server_name>
## List of Azure Active Directory administrators in a server.
az sql server ad-admin list --resource-group <resource_group> --server <server_name>
## Gets an advanced threat protection
az sql server advanced-threat-protection-setting show --resource-group <resource_group> --name <server_name>
## Get server's auditing policy.
az sql server audit-policy show --resource-group <resource_group> --name <server_name>
## Gets a server's secure connection policy.
az sql server conn-policy show --resource-group <resource_group> --server <server_name>
## Gets a list of server DNS aliases for a server.
az sql server dns-alias list --resource-group <resource_group> --server <server_name>
## List of server keys.
az sql server key list --resource-group <resource_group> --server <server_name>
## Gets a server encryption protector.
az sql server tde-key show --resource-group <resource_group> --server <server_name>
# List Databases in a SQL server
az sql db list --server <server_name> --resource-group <resource_group> #--output table
## Get details of a specific database
az sql db show --name <database_name> --server <server_name> --resource-group <resource_group>
## List database usages
az sql db list-usages --name <database_name> --server <server_name> --resource-group <resource_group>
## List of operations performed on the database.
az sql db op list --database <database_name> --server <server_name> --resource-group <resource_group>
## List sql database classification
az sql db classification list --name <database_name> --server <server_name> --resource-group <resource_group>
## List long-term retention backups for a SQL database
az sql db ltr-backup list --database <database_name> --server <server_name> --resource-group <resource_group>
## List long-term retention policy
az sql db ltr-policy --name <database_name> --server <server_name> --resource-group <resource_group>
## List long-term retention policy
az sql db str-policy --name <database_name> --server <server_name> --resource-group <resource_group>
## List the replicas of a database and their replication status
az sql db replica list-links --name <database_name> --server <server_name> --resource-group <resource_group>
## List deleted SQL databases
az sql db list-deleted --server <server_name> --resource-group <resource_group>
## List database usages
az sql db list-usages --name <database_name> --server <server_name> --resource-group <resource_group>
## List restorable dropped databases in a SQL server
az sql db list-deleted --server <server_name> --resource-group <resource_group>
## List advanced threat protection setting show
az sql db advanced-threat-protection-setting --name <database_name> --server <server_name> --resource-group <resource_group>
# List all elastic pools in a SQL server
az sql elastic-pool list --server <server_name> --resource-group <resource_group> #--output table
## List all databases in a specific elastic pool
az sql elastic-pool show --name <elastic_pool_name> --server <server_name> --resource-group <resource_group>
## List of databases in an elastic pool.
az sql elastic-pool list-dbs --name <elastic_pool_name> --server <server_name> --resource-group <resource_group>
# List all managed Instances
az sql mi list
az sql mi show --resource-group <res-grp> --name <name>
az sql midb list
az sql midb show --resource-group <res-grp> --name <name>
# Lis all sql VM
az sql vm list
az sql vm show --resource-group <res-grp> --name <name>
{{#endtab}}
{{#tab name="Az PowerShell"}}
# List Servers
Get-AzSqlServer -ResourceGroupName "<resource-group-name>"
# List All Databases in a SQL Server
Get-AzSqlDatabase -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# Get Details of a Specific Database
Get-AzSqlDatabase -Name "<database_name>" -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List Operations Performed on the Database
Get-AzSqlDatabaseActivity -DatabaseName "<database_name>" -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List SQL Database Classification
Get-AzSqlDatabaseSensitivityClassification -DatabaseName "<database_name>" -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List Long-Term Retention Backups for a SQL Database
Get-AzSqlDatabaseLongTermRetentionBackup -ResourceGroupName "<resource_group>" -Location "<location>"
# List Replicas of a Database and Their Replication Status
Get-AzSqlDatabaseReplicationLink -DatabaseName "<database_name>" -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List Deleted SQL Databases
Get-AzSqlDeletedDatabaseBackup -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List All Elastic Pools in a SQL Server
Get-AzSqlElasticPool -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List All Databases in a Specific Elastic Pool
Get-AzSqlElasticPoolDatabase -ElasticPoolName "<elastic_pool_name>" -ServerName "<server_name>" -ResourceGroupName "<resource_group>"
# List all managed Instances
Get-AzSqlInstance
Get-AzSqlInstance -ResourceGroupName <ResourceGroupName> -Name <ManagedInstanceName>
# List All Databases in a SQL Managed Instance
Get-AzSqlInstanceDatabase -ResourceGroupName <ResourceGroupName> -InstanceName <ManagedInstanceName>
# Lis all sql VM
Get-AzSqlVM
{{#endtab}} {{#endtabs}}
Connettersi ed eseguire query SQL
Potresti trovare una stringa di connessione (contenente credenziali) dall'esempio enumerando un Az WebApp:
function invoke-sql{
param($query)
$Connection_string = "Server=tcp:supercorp.database.windows.net,1433;Initial Catalog=flag;Persist Security Info=False;User ID=db_read;Password=gAegH!324fAG!#1fht;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
$Connection = New-Object System.Data.SqlClient.SqlConnection $Connection_string
$Connection.Open()
$Command = New-Object System.Data.SqlClient.SqlCommand
$Command.Connection = $Connection
$Command.CommandText = $query
$Reader = $Command.ExecuteReader()
while ($Reader.Read()) {
$Reader.GetValue(0)
}
$Connection.Close()
}
invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;'
Puoi anche usare sqlcmd per accedere al database. È importante sapere se il server consente connessioni pubbliche az sql server show --name <server-name> --resource-group <resource-group>, e anche se la regola del firewall consente al nostro IP di accedere:
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
Riferimenti
- https://learn.microsoft.com/en-us/azure/azure-sql/azure-sql-iaas-vs-paas-what-is-overview?view=azuresql
- https://learn.microsoft.com/en-us/azure/azure-sql/database/single-database-overview?view=azuresql
- https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/sql-managed-instance-paas-overview?view=azuresql
- https://learn.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/sql-server-on-azure-vm-iaas-what-is-overview?view=azuresql
Escalation dei privilegi
{{#ref}} ../az-privilege-escalation/az-sql-privesc.md {{#endref}}
Post Sfruttamento
{{#ref}} ../az-post-exploitation/az-sql-post-exploitation.md {{#endref}}
{{#include ../../../banners/hacktricks-training.md}}