Az - MySQL-Datenbanken

Reading time: 6 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

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

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

Verbindung

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

bash
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

bash
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:

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

Az - MySQL Privesc

Nach der Ausnutzung

Az - MySQL Post Exploitation

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

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks