14 KiB
Az - SQL
{{#include ../../../banners/hacktricks-training.md}}
Azure SQL
Azure SQL je porodica upravljanih, sigurnih i inteligentnih proizvoda koji koriste SQL Server bazu podataka u Azure cloud-u. To znači da ne morate brinuti o fizičkom upravljanju vašim serverima, a možete se fokusirati na upravljanje vašim podacima.
Azure SQL se sastoji od tri glavne ponude:
- Azure SQL Database: Ovo je potpuno upravljana usluga baze podataka, koja vam omogućava da hostujete pojedinačne baze podataka u Azure cloud-u. Nudi ugrađenu inteligenciju koja uči vaše jedinstvene obrasce baze podataka i pruža prilagođene preporuke i automatsko podešavanje.
- Azure SQL Managed Instance: Ovo je za veće, celokupne SQL Server instance. Pruža skoro 100% kompatibilnost sa najnovijom SQL Server on-premises (Enterprise Edition) bazom podataka, koja nudi nativnu implementaciju virtuelne mreže (VNet) koja rešava uobičajene sigurnosne probleme, i poslovni model povoljan za on-premises SQL Server korisnike.
- Azure SQL Server na Azure VMs: Ovo je infrastruktura kao usluga (IaaS) i najbolje je za migracije gde želite kontrolu nad operativnim sistemom i SQL Server instancom, kao da je to server koji radi on-premises.
Azure SQL Database
Azure SQL Database je potpuno upravljana platforma baze podataka kao usluga (PaaS) koja pruža skalabilna i sigurna rešenja za relacione baze podataka. Izgrađena je na najnovijim SQL Server tehnologijama i eliminiše potrebu za upravljanjem infrastrukturom, što je čini popularnim izborom za aplikacije zasnovane na cloud-u.
Ključne karakteristike
- Uvek ažurirano: Radi na najnovijoj stabilnoj verziji SQL Server-a i automatski prima nove funkcije i zakrpe.
- PaaS mogućnosti: Ugrađena visoka dostupnost, rezervne kopije i ažuriranja.
- Fleksibilnost podataka: Podržava relacione i nerezidencijalne podatke (npr. grafove, JSON, prostorne i XML).
Modeli kupovine / Servisni nivoi
- vCore-bazirano: Izaberite računarske resurse, memoriju i skladište nezavisno. Za opštu svrhu, poslovno kritične (sa visokom otpornosti i performansama za OLTP aplikacije), i skalira do 128 TB skladišta.
- DTU-bazirano: Kombinuje računarske resurse, memoriju i I/O u fiksne nivoe. Izbalansirani resursi za uobičajene zadatke.
- Standard: Izbalansirani resursi za uobičajene zadatke.
- Premium: Visoke performanse za zahtevne radne opterećenja.
Modeli implementacije
Azure SQL Database podržava fleksibilne opcije implementacije kako bi zadovoljila različite potrebe:
- Jedna baza podataka:
- Potpuno izolovana baza podataka sa sopstvenim posvećenim resursima.
- Odlično za mikroservise ili aplikacije koje zahtevaju jedan izvor podataka.
- Elastični bazen:
- Omogućava više baza podataka da dele resurse unutar bazena.
- Ekonomično za aplikacije sa promenljivim obrascima korišćenja kroz više baza podataka.
Skalabilne performanse i bazeni
- Jedinstvene baze podataka: Svaka baza podataka je izolovana i ima svoje posvećene računarske resurse, memoriju i skladište. Resursi se mogu dinamički skalirati (gore ili dole) bez prekida rada (1–128 vCores, 32 GB–4 TB skladišta, i do 128 TB).
- Elastični bazeni: Deli resurse između više baza podataka u bazenu kako bi se maksimizovala efikasnost i uštedeli troškovi. Resursi se takođe mogu dinamički skalirati za ceo bazen.
- Fleksibilnost servisnog nivoa: Počnite sa malom jedinstvenom bazom podataka u opštem nivou. Nadogradite na poslovno kritične ili hiperskalne nivoe kako potrebe rastu.
- Opcije skaliranja: Dinamičko skaliranje ili alternativne automatske skalacije.
Ugrađeno praćenje i optimizacija
- Query Store: Prati probleme sa performansama, identifikuje glavne potrošače resursa i nudi akcione preporuke.
- Automatsko podešavanje: Proaktivno optimizuje performanse sa funkcijama kao što su automatsko indeksiranje i ispravke plana upita.
- Integracija telemetrije: Podržava praćenje putem Azure Monitor-a, Event Hubs-a ili Azure Storage-a za prilagođene uvide.
Oporavak od katastrofa i dostupnost
- Automatske rezervne kopije: SQL Database automatski vrši pune, diferencijalne i rezervne kopije transakcionih logova baza podataka.
- Obnova tačke u vremenu: Oporavite baze podataka na bilo koje prethodno stanje unutar perioda zadržavanja rezervnih kopija.
- Geo-redundantnost
- Grupe za prebacivanje: P pojednostavljuje oporavak od katastrofa grupisanjem baza podataka za automatsko prebacivanje između regiona.
Azure SQL Managed Instance
Azure SQL Managed Instance je platforma kao usluga (PaaS) koja nudi skoro 100% kompatibilnost sa SQL Server-om i automatski obavlja većinu upravljačkih zadataka (npr. nadogradnje, zakrpe, rezervne kopije, praćenje). Pruža cloud rešenje za migraciju on-premises SQL Server baza podataka uz minimalne promene.
Servisni nivoi
- Opšta svrha: Ekonomična opcija za aplikacije sa standardnim I/O i latencijskim zahtevima.
- Poslovno kritično: Opcija visoke performanse sa niskom I/O latencijom za kritična radna opterećenja.
Napredne sigurnosne karakteristike
- Zaštita od pretnji: Napredna zaštita od pretnji upozorava na sumnjive aktivnosti i SQL injekcijske napade. Revizija za praćenje i beleženje događaja baze podataka radi usklađenosti.
- Kontrola pristupa: Microsoft Entra autentifikacija za centralizovano upravljanje identitetom. Bezbednost na nivou reda i dinamičko maskiranje podataka za granularnu kontrolu pristupa.
- Rezervne kopije: Automatske i ručne rezervne kopije sa mogućnošću obnavljanja tačke u vremenu.
Azure SQL Virtual Machines
Azure SQL Virtual Machines je najbolje za migracije gde želite kontrolu nad operativnim sistemom i SQL Server instancom, kao da je to server koji radi on-premises. Može imati različite veličine mašina i širok izbor verzija i izdanja SQL Server-a.
Ključne karakteristike
Automatska rezervna kopija: Planirajte rezervne kopije za SQL baze podataka.
Automatsko zakrpljenje: Automatizuje instalaciju Windows i SQL Server ažuriranja tokom održavanja.
Integracija Azure Key Vault: Automatski konfiguriše Key Vault za SQL Server VMs.
Integracija Defender for Cloud: Prikazuje preporuke Defender for SQL u portalu.
Fleksibilnost verzije/izdanja: Promenite metapodatke verzije ili izdanja SQL Server-a bez ponovne implementacije VM-a.
Sigurnosne karakteristike
Microsoft Defender for SQL: Uvidi i upozorenja o sigurnosti.
Integracija Azure Key Vault: Sigurno skladištenje kredencijala i ključeva za enkripciju.
Microsoft Entra (Azure AD): Autentifikacija i kontrola pristupa.
Enumeracija
{{#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}}
Povežite se i izvršite SQL upite
Možete pronaći string za povezivanje (koji sadrži akreditive) iz primera enumerating an 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;'
Možete takođe koristiti sqlcmd za pristup bazi podataka. Važno je znati da li server dozvoljava javne konekcije az sql server show --name <server-name> --resource-group <resource-group>, kao i da li pravilo vatrozida dozvoljava našem IP-u pristup:
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
Reference
- 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
Eskalacija privilegija
{{#ref}} ../az-privilege-escalation/az-sql-privesc.md {{#endref}}
Post Eksploatacija
{{#ref}} ../az-post-exploitation/az-sql-post-exploitation.md {{#endref}}
{{#include ../../../banners/hacktricks-training.md}}