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

7.4 KiB

Az - MySQL-Datenbanken

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

Azure MySQL

Azure Database for MySQL ist ein vollständig verwalteter relationaler Datenbankdienst, der auf der MySQL Community Edition basiert und darauf ausgelegt ist, Skalierbarkeit, Sicherheit und Flexibilität für verschiedene Anwendungsbedürfnisse zu bieten. Es gibt zwei verschiedene Bereitstellungsmodelle:

  • Single Server (ist auf dem Rückzug):
  • Optimiert für kosteneffektive und einfach zu verwaltende MySQL-Bereitstellungen.
  • Zu den Funktionen gehören automatisierte Backups, hohe Verfügbarkeit und grundlegende Überwachung.
  • Ideal für Anwendungen mit vorhersehbaren Arbeitslasten.
  • Flexible Server:
  • Bietet mehr Kontrolle über die Datenbankverwaltung und -konfiguration.
  • Unterstützt hohe Verfügbarkeit (same-zone und zone-redundant).
  • Bietet elastische Skalierung, Patch-Management und Arbeitslastoptimierung.
  • Bietet Stop/Start-Funktionalität zur Kostensenkung.

Hauptmerkmale

  • Serververwaltung: Die ad-admin-Funktion ermöglicht die Verwaltung von Azure Entra ID-Administratoren für MySQL-Server und bietet Kontrolle über den administrativen Zugriff über Entra ID-Anmeldeinformationen. Mysql unterstützt Benutzerverwaltete Identitäten, die zur Authentifizierung ohne die Notwendigkeit von Anmeldeinformationen verwendet werden und von anderen Diensten genutzt werden können.
  • Lebenszyklusverwaltung: Optionen zum Starten oder Stoppen eines Servers, Löschen einer flexiblen Serverinstanz, Neustarten eines Servers, um Konfigurationsänderungen schnell anzuwenden, und Warten, um sicherzustellen, dass ein Server bestimmte Bedingungen erfüllt, bevor mit Automatisierungsskripten fortgefahren wird.
  • Sicherheit und Netzwerk: Sichern Sie Ihren Server, indem Sie Verbindungen durch Firewall-Regeln einschränken, die nur bestimmte öffentliche IP-Adressen zulassen, oder indem Sie private Endpunkte verwenden, die Ihren Server in ein virtuelles Netzwerk integrieren. Alle Verbindungen sind mit TLS 1.2-Verschlüsselung geschützt. Datenbanken, Backups und Protokolle sind standardmäßig im Ruhezustand mit dienstverwalteten Schlüsseln oder benutzerdefinierten Schlüsseln verschlüsselt.
  • Datenschutz und Backup: umfasst Optionen zur Verwaltung flexibler Server-Backups für die Datenwiederherstellung, Durchführung von Geo-Wiederherstellungen zur Wiederherstellung eines Servers in einer anderen Region, Export von Server-Backups zur externen Nutzung (in der Vorschau) und Wiederherstellung eines Servers aus einem Backup zu einem bestimmten Zeitpunkt.

Aufzählung

{{#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 }}

Verbindung

Mit der Erweiterung rdbms-connect können Sie auf die Datenbank zugreifen mit:

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>;"

Oder mit dem MySQL-Native-Extension-Plugin

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

Außerdem können Sie Abfragen mit GitHub ausführen, aber das Passwort und der Benutzer sind ebenfalls erforderlich. Sie müssen eine SQL-Datei mit der auszuführenden Abfrage einrichten und dann:

# 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>

Privilegienerhöhung

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

Nach der Ausnutzung

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

ToDo

  • Suchen Sie nach einer Möglichkeit, mit mysql flexible-server als Admin zuzugreifen, um zu überprüfen, ob es sich um eine Privilegienerhöhung handelt

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