14 KiB
Az - SQL
{{#include ../../../banners/hacktricks-training.md}}
Azure SQL
Azure SQL is 'n familie van bestuurde, veilige en intelligente produkte wat die SQL Server-databasisengine in die Azure-wolk gebruik. Dit beteken jy hoef nie bekommerd te wees oor die fisiese administrasie van jou bedieners nie, en jy kan fokus op die bestuur van jou data.
Azure SQL bestaan uit drie hoofaanbiedinge:
- Azure SQL Database: Dit is 'n volledig bestuurde databasisdiens, wat jou toelaat om individuele databasisse in die Azure-wolk te huisves. Dit bied ingeboude intelligensie wat jou unieke databasispatrone leer en aangepaste aanbevelings en outomatiese afstemming bied.
- Azure SQL Managed Instance: Dit is vir groter skaal, hele SQL Server-instantie-geskepte ontplooiings. Dit bied byna 100% kompatibiliteit met die nuutste SQL Server op-premises (Enterprise Edition) Databasisengine, wat 'n inheemse virtuele netwerk (VNet) implementering bied wat algemene sekuriteitskwessies aanspreek, en 'n besigheidsmodel wat gunstig is vir op-premises SQL Server-klante.
- Azure SQL Server op Azure VMs: Dit is Infrastruktur as 'n Diens (IaaS) en is die beste vir migrasies waar jy beheer oor die bedryfstelsel en SQL Server-instantie wil hê, soos dit 'n bediener was wat op-premises gedraai het.
Azure SQL Database
Azure SQL Database is 'n volledig bestuurde databasisplatform as 'n diens (PaaS) wat skaalbare en veilige relationele databasisoplossings bied. Dit is gebou op die nuutste SQL Server-tegnologieë en elimineer die behoefte aan infrastruktuurbeheer, wat dit 'n gewilde keuse maak vir wolk-gebaseerde toepassings.
Sleutelkenmerke
- Altijd Opdatering: Loop op die nuutste stabiele weergawe van SQL Server en ontvang nuwe kenmerke en regstellings outomaties.
- PaaS Vermoëns: Ingeboude hoë beskikbaarheid, rugsteun, en opdaterings.
- Data Buigsaamheid: Ondersteun relationele en nie-relationele data (bv. grafieke, JSON, ruimtelik, en XML).
Aankoopmodelle / Diens Tiers
- vCore-gebaseerd: Kies rekenaar, geheue, en stoor onafhanklik. Vir Algemene Doeleindes, Besigheids Krities (met hoë veerkragtigheid en prestasie vir OLTP-toepassings), en skaal tot 128 TB stoor.
- DTU-gebaseerd: Bundel rekenaar, geheue, en I/O in vaste tiers. Gebalanseerde hulpbronne vir algemene take.
- Standaard: Gebalanseerde hulpbronne vir algemene take.
- Premium: Hoë prestasie vir veeleisende werklas.
Ontplooiingsmodelle
Azure SQL Database ondersteun buigsame ontplooiingsopsies om aan verskeie behoeftes te voldoen:
- Enkele Databasis:
- 'n Volledig geïsoleerde databasis met sy eie toegewyde hulpbronne.
- Wonderlik vir mikrodiens of toepassings wat 'n enkele databron benodig.
- Elastiese Poel:
- Laat verskeie databasisse toe om hulpbronne binne 'n poel te deel.
- Kostedoeltreffend vir toepassings met wisselende gebruikspatrone oor verskeie databasisse.
Skaalbare prestasie en poele
- Enkele Databasisse: Elke databasis is geïsoleerd en het sy eie toegewyde rekenaar, geheue, en stoorhulpbronne. Hulpbronne kan dinamies geskaal word (op of af) sonder stilstand (1–128 vCores, 32 GB–4 TB stoor, en tot 128 TB).
- Elastiese Poele: Deel hulpbronne oor verskeie databasisse in 'n poel om doeltreffendheid te maksimeer en koste te bespaar. Hulpbronne kan ook dinamies geskaal word vir die hele poel.
- Diens Tier Buigsaamheid: Begin klein met 'n enkele databasis in die Algemene Doeleindes tier. Opgradeer na Besigheids Krities of Hyperscale tiers soos behoeftes groei.
- Skaalopsies: Dinamiese Skaal of Outoskaal Alternatiewe.
Ingeboude Monitering & Optimalisering
- Query Store: Volg prestasieprobleme, identifiseer top hulpbronverbruikers, en bied uitvoerbare aanbevelings.
- Outomatiese Afstemming: Proaktief optimaliseer prestasie met kenmerke soos outomatiese indeksering en query plan regstellings.
- Telemetry Integrasie: Ondersteun monitering deur Azure Monitor, Event Hubs, of Azure Storage vir op maat gemaakte insigte.
Ramp Herstel & Beskikbaarheid
- Outomatiese rugsteun: SQL Database voer outomaties volledige, differensiële, en transaksielog rugsteun van databasisse uit.
- Punt-in-Tyd Herstel: Herstel databasisse na enige vorige toestand binne die rugsteunretensieperiode.
- Geo-Roerende
- Failover Groepe: Vereenvoudig ramp herstel deur databasisse te groepeer vir outomatiese failover oor streke.
Azure SQL Managed Instance
Azure SQL Managed Instance is 'n Platform as 'n Diens (PaaS) databasisengine wat byna 100% kompatibiliteit met SQL Server bied en die meeste bestuurs take (bv. opgradering, regstelling, rugsteun, monitering) outomaties hanteer. Dit bied 'n wolkoplossing vir die migrasie van op-premises SQL Server databasisse met minimale veranderinge.
Diens Tiers
- Algemene Doeleindes: Kostedoeltreffende opsie vir toepassings met standaard I/O en latensie vereistes.
- Besigheids Krities: Hoë-prestasie opsie met lae I/O latensie vir kritieke werklas.
Gevorderde Sekuriteitskenmerke
- Dreigingsbeskerming: Gevorderde Dreigingsbeskerming waarsku vir verdagte aktiwiteite en SQL-inspuitaanvalle. Oudits om databasisgebeurtenisse te volg en te log vir nakoming.
- Toegangbeheer: Microsoft Entra-outekening vir gesentraliseerde identiteitsbestuur. Ry-Vlak Sekuriteit en Dinamiese Data Maskering vir fyn toegangbeheer.
- Rugsteun: Geoutomatiseerde en handmatige rugsteun met punt-in-tyd herstel vermoë.
Azure SQL Virtuele Masjiene
Azure SQL Virtuele Masjiene is die beste vir migrasies waar jy beheer oor die bedryfstelsel en SQL Server-instantie wil hê, soos dit 'n bediener was wat op-premises gedraai het. Dit kan verskillende masjien groottes hê, en 'n wye seleksie van SQL Server weergawes en edisies.
Sleutelkenmerke
Geoutomatiseerde Rugsteun: Skedule rugsteun vir SQL databasisse.
Outomatiese Regstelling: Automatiseer die installasie van Windows en SQL Server opdaterings tydens 'n onderhoudsvenster.
Azure Key Vault Integrasie: Konfigureer outomaties Key Vault vir SQL Server VMs.
Defender vir Wolk Integrasie: Beskou Defender vir SQL aanbevelings in die portaal.
Weergave/Edisie Buigsaamheid: Verander SQL Server weergawe of edisie metadata sonder om die VM te herontplooi.
Sekuriteitskenmerke
Microsoft Defender vir SQL: Sekuriteitsinsigte en waarskuwings.
Azure Key Vault Integrasie: Veilige berging van akrediteer en versleuteling sleutels.
Microsoft Entra (Azure AD): Outentisering en toegangbeheer.
Enumerasie
{{#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}}
Verbind en voer SQL-navrae uit
Jy kan 'n verbindsstring (wat akrediteerbesonderhede bevat) vind van byvoorbeeld die opnoem van 'n 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;'
U kan ook sqlcmd gebruik om toegang tot die databasis te verkry. Dit is belangrik om te weet of die bediener openbare verbindings toelaat az sql server show --name <server-name> --resource-group <resource-group>, en ook of die vuurmuurreël ons IP toelaat om toegang te verkry:
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
Verwysings
- 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
Privilege Escalation
{{#ref}} ../az-privilege-escalation/az-sql-privesc.md {{#endref}}
Post Exploitation
{{#ref}} ../az-post-exploitation/az-sql-post-exploitation.md {{#endref}}
{{#include ../../../banners/hacktricks-training.md}}