Files
hacktricks-cloud/src/pentesting-cloud/azure-security/az-services/az-mysql.md

6.9 KiB

Az - MySQL Baze Podataka

{{#include ../../../banners/hacktricks-training.md}}

Azure MySQL

Azure Database for MySQL je potpuno upravljana relacijska baza podataka zasnovana na MySQL Community Edition, dizajnirana da pruži skalabilnost, sigurnost i fleksibilnost za različite potrebe aplikacija. Ima dva različita modela implementacije:

  • Single Server (je na putu povlačenja):
  • Optimizovan za isplative i lako upravljive MySQL implementacije.
  • Karakteristike uključuju automatske rezervne kopije, visoku dostupnost i osnovno praćenje.
  • Idealno za aplikacije sa predvidivim opterećenjima.
  • Flexible Server:
  • Pruža veću kontrolu nad upravljanjem i konfiguracijom baze podataka.
  • Podržava visoku dostupnost (isti region i redundantni region).
  • Karakteristike uključuju elastično skaliranje, upravljanje zakrpama i optimizaciju opterećenja.
  • Nudi funkcionalnost za zaustavljanje/pokretanje radi uštede troškova.

Ključne Karakteristike

  • Upravljanje Serverom: ad-admin funkcija omogućava upravljanje Azure Active Directory (AAD) administratorima za MySQL servere, pružajući kontrolu nad administrativnim pristupom putem AAD akreditiva, dok identity funkcija omogućava dodeljivanje i upravljanje Azure Managed Identities, nudeći sigurnu, autentifikaciju bez akreditiva za pristup Azure resursima.
  • Upravljanje Životnim Ciklusom: opcije za pokretanje ili zaustavljanje servera, brisanje instance fleksibilnog servera, ponovo pokretanje servera kako bi se brzo primenile promene konfiguracije, i čekanje da se osigura da server ispunjava određene uslove pre nego što se nastavi sa automatizovanim skriptama.
  • Sigurnost i Mrežno Povezivanje: može upravljati pravilima vatrozida servera za siguran pristup bazi podataka i odvojiti konfiguracije virtuelne mreže po potrebi.
  • Zaštita Podataka i Rezervne Kopije: uključuje opcije za upravljanje rezervnim kopijama fleksibilnog servera za oporavak podataka, izvođenje geo-obnavljanja za oporavak servera u drugoj regiji, izvoz rezervnih kopija servera za spoljašnju upotrebu (u Preview), i obnavljanje servera iz rezervne kopije na određenu tačku u vremenu.

Enumeracija

{{#tabs }} {{#tab name="az cli" }}

# List all flexible-servers
az mysql flexible-server db list --resource-group <resource-group-name>
# List databases in a flexible-server
az mysql flexible-server db list --resource-group <resource-group-name> --server-name <server_name>
# Show specific details of a MySQL database
az mysql flexible-server db show --resource-group <resource-group-name> --server-name <server_name> --database-name <database_name>

# List firewall rules of the a server
az mysql flexible-server firewall-rule list --resource-group <resource-group-name> --name <server_name>

# List all ad-admin in a server
az mysql flexible-server ad-admin list --resource-group <resource-group-name> --server-name <server_name>
# List all user assigned managed identities from the server
az mysql flexible-server identity list --resource-group <resource-group-name> --server-name <server_name>

# List the server backups
az mysql flexible-server backup list --resource-group <resource-group-name> --name <server_name>
# List all read replicas for a given server
az mysql flexible-server replica list --resource-group <resource-group-name> --name <server_name>

# Get the server's advanced threat protection setting
az mysql flexible-server advanced-threat-protection-setting show --resource-group <resource-group-name> --name <server_name>
# List all of the maintenances of a flexible server
az mysql flexible-server maintenance list --resource-group <resource-group-name> --server-name <server_name>
# List log files for a server.
az mysql flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>

{{#endtab }}

{{#tab name="Az Powershell" }}

Get-Command -Module Az.MySql

# Get all flexible servers in a resource group
Get-AzMySqlFlexibleServer -ResourceGroupName <resource-group-name>

# List databases in a specific flexible server
Get-AzMySqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name>

# Get details of a specific database in a flexible server
Get-AzMySqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name> -DatabaseName <database_name>

# List all firewall rules for a flexible server
Get-AzMySqlFlexibleServerFirewallRule -ResourceGroupName <resource-group-name> -ServerName <server_name>

# Get the identity information of a flexible server
Get-AzMySqlFlexibleServerIdentity -ResourceGroupName <resource-group-name> -ServerName <server_name>

# Get the server's advanced threat protection setting
Get-AzMySqlFlexibleServerAdvancedThreatProtection -ResourceGroupName <resource-group-name> -ServerName <server_name>

# List configuration settings of a flexible server
Get-AzMySqlFlexibleServerConfiguration -ResourceGroupName <resource-group-name> -ServerName <server_name>
# Get the connection string for a flexible server
Get-AzMySqlFlexibleServerConnectionString -ResourceGroupName <resource-group-name> -ServerName <server_name> -Client <client>

# List all read replicas for a given server
Get-AzMySqlFlexibleServerReplica -ResourceGroupName <resource-group-name> -ServerName <server_name>

# Get the maintenance window details for a flexible server
Get-AzMySqlFlexibleServerMaintenanceWindow -ResourceGroupName <resource-group-name> -ServerName <server_name>

# List log files for a server
Get-AzMySqlFlexibleServerLog -ResourceGroupName <resource-group-name> -ServerName <server_name>

{{#endtab }} {{#endtabs }}

Povezivanje

Sa ekstenzijom rdbms-connect možete pristupiti bazi podataka sa:

az mysql flexible-server connect -n <server-name> -u <username> -p <password> --interactive

#or execute commands
az mysql flexible-server execute \
-n <server-name> \
-u <username> \
-p "<password>" \
-d <database-name> \
--querytext "SELECT * FROM <table-name>;"

Ili sa MySQL nativnim ekstenzijskim pluginom

mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p

Takođe možete izvršavati upite sa github-om, ali su potrebni i korisničko ime i lozinka. Morate postaviti sql datoteku sa upitom koji treba izvršiti i zatim:

# Setup
az mysql flexible-server deploy setup \
-s <server-name> \
-g <resource-group> \
-u <admin-user> \
-p "<admin-password>" \
--sql-file <path-to-sql-file> \
--repo <github-username/repository-name> \
--branch <branch-name> \
--action-name <action-name> \
--allow-push

# Run it
az mysql flexible-server deploy run \
--action-name <action-name> \
--branch <branch-name>

Eskalacija privilegija

{{#ref}} ../az-privilege-escalation/az-mysql-privesc.md {{#endref}}

Post Eksploatacija

{{#ref}} ../az-post-exploitation/az-mysql-post-exploitation.md {{#endref}}

ToDo

  • Potražite način da pristupite mysql flexible-server ad-admin da biste proverili da li je to metoda eskalacije privilegija

{{#include ../../../banners/hacktricks-training.md}}